118 lines
3.8 KiB
Lua
118 lines
3.8 KiB
Lua
|
|
-- 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
|
|||
|
|
|