Add: first import
This commit is contained in:
commit
82641f61be
23 changed files with 800 additions and 0 deletions
117
lua/autocmds.lua
Normal file
117
lua/autocmds.lua
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
-- Ouvrir lz terminal dans une fenetre flottante pour le make
|
||||
vim.cmd([[
|
||||
autocmd FileType cpp setlocal nobuflisted
|
||||
let g:makeprg="make | tee /tmp/make_output" " Ne pas bloquer après make
|
||||
command! Make silent execute 'belowright terminal make'
|
||||
]])
|
||||
|
||||
-- Redimensionne les fenêtres lors du redimensionnement du terminal
|
||||
vim.api.nvim_create_autocmd("VimResized", {
|
||||
group = vim.api.nvim_create_augroup("win_autoresize", { clear = true }),
|
||||
desc = "Auto-resize windows on resizing operation",
|
||||
command = "wincmd =",
|
||||
})
|
||||
|
||||
-- Désactive le highlight après la recherche
|
||||
vim.api.nvim_create_autocmd("InsertEnter", {
|
||||
callback = function()
|
||||
vim.cmd("nohlsearch")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Activer ZenMode pour les fichiers Markdown
|
||||
vim.api.nvim_create_autocmd({"BufEnter","BufWinEnter"}, {
|
||||
pattern = { "*.md", "*.wiki" },
|
||||
callback = function()
|
||||
vim.defer_fn(function ()
|
||||
if not require("zen-mode.view").is_open() then
|
||||
vim.cmd("ZenMode")
|
||||
end
|
||||
end, 100)
|
||||
end
|
||||
})
|
||||
|
||||
-- Désactiver ZenMode lors du changement de buffer
|
||||
vim.api.nvim_create_autocmd("BufLeave", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
if require("zen-mode.view").is_open() then
|
||||
vim.cmd("ZenMode")
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
local function format_and_restore()
|
||||
vim.cmd("normal! mz") -- Place une marque 'z' à la position actuelle
|
||||
vim.cmd([[%s/\s\+$//e]]) -- Supprime les espaces inutiles en fin de ligne
|
||||
--vim.cmd("normal! gg=G") -- Formate tout le fichier
|
||||
vim.cmd("normal! `z") -- Retourne à la marque 'z'
|
||||
end
|
||||
-- Configure l'autocommand pour le formatage à la sauvegarde
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
pattern = "*", -- Applique à tous les fichiers
|
||||
callback = function()
|
||||
local ft = vim.bo.filetype -- Récupère le type de fichier
|
||||
|
||||
if ft == "cpp" or ft == "c" then
|
||||
-- Utilise LSP pour formater le C et C++
|
||||
vim.lsp.buf.format({ async = false })
|
||||
elseif ft == "python" then
|
||||
-- Utilise Black pour formater le Python
|
||||
vim.cmd("Black")
|
||||
elseif ft ~= "markdown" then
|
||||
format_and_restore()
|
||||
end
|
||||
end,
|
||||
})
|
||||
-- Vérifie si tmux est installé
|
||||
local function is_tmux_installed()
|
||||
return vim.fn.executable("tmux") == 1
|
||||
end
|
||||
|
||||
-- Vérifie si on est dans une session tmux
|
||||
local function is_in_tmux()
|
||||
return os.getenv("TMUX") ~= nil
|
||||
end
|
||||
|
||||
-- Récupère la couleur d'un groupe de highlight
|
||||
local function get_hl_color(hl, attr)
|
||||
local ok, hl_data = pcall(vim.api.nvim_get_hl, 0, { name = hl })
|
||||
if ok and hl_data[attr] then
|
||||
return string.format("#%06x", hl_data[attr])
|
||||
else
|
||||
return "#444444" -- Gris par défaut si rien trouvé
|
||||
end
|
||||
end
|
||||
|
||||
-- 📡 Synchronise les couleurs avec Tmux selon le mode
|
||||
local function set_tmux_status(mode)
|
||||
if not (is_tmux_installed() and is_in_tmux()) then
|
||||
return -- Ne fait rien si tmux n'est pas dispo
|
||||
end
|
||||
|
||||
local mode_colors = {
|
||||
n = get_hl_color("MiniStatuslineModeNormal", "bg"),
|
||||
i = get_hl_color("MiniStatuslineModeInsert", "bg"),
|
||||
v = get_hl_color("MiniStatuslineModeVisual", "bg"),
|
||||
V = get_hl_color("MiniStatuslineModeVisual", "bg"),
|
||||
[""] = get_hl_color("MiniStatuslineModeVisual", "bg"),
|
||||
R = get_hl_color("MiniStatuslineModeReplace", "bg"),
|
||||
c = get_hl_color("MiniStatuslineModeCommand", "bg"),
|
||||
}
|
||||
|
||||
local color = mode_colors[mode] or get_hl_color("MiniStatuslineModeNormal", "bg")
|
||||
os.execute(string.format("tmux set-option -g status-bg '%s'", color))
|
||||
end
|
||||
|
||||
-- Active la synchronisation Tmux ↔ Neovim
|
||||
if is_tmux_installed() and is_in_tmux() then
|
||||
vim.api.nvim_create_autocmd("ModeChanged", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
local mode = vim.fn.mode()
|
||||
set_tmux_status(mode)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue