From bc65b628ddb71a29ee9082c92b4f749c1172ae72 Mon Sep 17 00:00:00 2001 From: Jeff LANCE Date: Sun, 10 Aug 2025 14:02:33 +0200 Subject: [PATCH] up --- lua/custom/keymaps/buffers.lua | 24 +++++ lua/custom/keymaps/files.lua | 17 +--- lua/custom/keymaps/general.lua | 2 +- lua/custom/keymaps/init.lua | 2 + lua/custom/keymaps/quarto.lua | 13 +++ lua/custom/plugins/keymaps-helper.lua | 17 ++++ lua/custom/plugins/neotree-helper.lua | 8 +- lua/kickstart/core/keymaps.lua | 5 +- lua/kickstart/core/lazy-plugins.lua | 4 +- lua/kickstart/plugins/autoformat.lua | 7 +- lua/kickstart/plugins/mini.lua | 14 +-- lua/kickstart/plugins/neo-tree.lua | 128 ++++++++++++++------------ lua/kickstart/plugins/quarto.lua | 99 +++++++++++++++++++- 13 files changed, 246 insertions(+), 94 deletions(-) create mode 100644 lua/custom/keymaps/buffers.lua create mode 100644 lua/custom/keymaps/quarto.lua create mode 100644 lua/custom/plugins/keymaps-helper.lua diff --git a/lua/custom/keymaps/buffers.lua b/lua/custom/keymaps/buffers.lua new file mode 100644 index 0000000..2ffaa95 --- /dev/null +++ b/lua/custom/keymaps/buffers.lua @@ -0,0 +1,24 @@ +-- Neo-tree mappings +-- + +local wk = require 'which-key' +local neotree_helper = require 'custom.plugins.neotree-helper' +local bufremove = require 'mini.bufremove' + +wk.add { + mode = { 'n', 'v', 'i' }, + { 'b', group = '[B]uffers' }, -- group + { 'bc', bufremove.delete, desc = '[C]lose [B]uffer', silent = true }, + { 'bl', 'Neotree buffers', desc = '[L]ist open [B]uffers', silent = true }, + { 'bs', 'source %', desc = '[B]uffer [S]ource', silent = true }, + { 'bw', 'w', desc = '[B]uffer [W]rite', silent = true }, + { 'bp', 'bprevious', desc = '[P]revious [B]uffer', silent = true }, + { 'bn', 'bnext', desc = '[N]ext [B]uffer', silent = true }, + { '', 'bprevious', desc = '[P]revious [B]uffer', silent = true, hidden = true }, + { '', 'bnext', desc = '[N]ext [B]uffer', silent = true, hidden = true }, + { '', bufremove.delete, desc = '[C]lose [B]uffer', silent = true, hidden = true }, + { '', 'w', desc = 'Save buffer', silent = true, hidden = true }, +} + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/keymaps/files.lua b/lua/custom/keymaps/files.lua index 546b5cc..d509a90 100644 --- a/lua/custom/keymaps/files.lua +++ b/lua/custom/keymaps/files.lua @@ -7,20 +7,9 @@ local bufremove = require 'mini.bufremove' wk.add { mode = { 'n', 'v' }, - { 'F', group = 'Fichier' }, -- group - { 'Fe', neotree_helper.smart_open, desc = 'Parcourir fichiers' }, - { 'Fc', bufremove.delete, desc = 'Fermer buffer', silent = true }, - { 'Fl', 'Neotree buffers', desc = 'Buffers ouverts', silent = true }, - { 'Fr', 'source %', desc = 'Recharger buffer', silent = true }, - { 'Fs', 'w', desc = 'Sauver buffer', silent = true }, - { 'Fp', 'bprevious', desc = 'Buffer précédent', silent = true }, - { 'Fn', 'bnext', desc = 'Buffer suivant', silent = true }, - { '', 'bprevious', desc = 'Buffer précédent', silent = true, hidden = true }, - { '', 'bnext', desc = 'Buffer suivant', silent = true, hidden = true }, - -- { '', 'source %', desc = 'Recharger buffer', silent = true, hidden = true }, - { '', 'w', desc = 'Sauver buffer', silent = true, hidden = true }, - { '', bufremove.delete, desc = 'Fermer buffer', silent = true, hidden = true }, - { '', neotree_helper.smart_open, desc = 'Parcourir fichiers', silent = true, hidden = true }, + -- { 'f', group = '[F]iles' }, -- group + { 'f', neotree_helper.smart_open, desc = 'Open file' }, + { '', neotree_helper.smart_open, desc = 'Open file', silent = true, hidden = true }, } -- The line beneath this is called `modeline`. See `:help modeline` diff --git a/lua/custom/keymaps/general.lua b/lua/custom/keymaps/general.lua index 27d32bb..e5e38c5 100644 --- a/lua/custom/keymaps/general.lua +++ b/lua/custom/keymaps/general.lua @@ -5,7 +5,7 @@ local wk = require 'which-key' wk.add { mode = { 'n', 'v', 'i' }, - { 'q', 'qall', desc = 'Quitter', silent = true }, + { '', 'qall', desc = 'Quitter', silent = true }, } -- The line beneath this is called `modeline`. See `:help modeline` diff --git a/lua/custom/keymaps/init.lua b/lua/custom/keymaps/init.lua index c6bc20e..257fe43 100644 --- a/lua/custom/keymaps/init.lua +++ b/lua/custom/keymaps/init.lua @@ -3,9 +3,11 @@ require 'custom.keymaps.nop' require 'custom.keymaps.general' +require 'custom.keymaps.buffers' require 'custom.keymaps.files' require 'custom.keymaps.edit' require 'custom.keymaps.display' +require 'custom.keymaps.quarto' -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/keymaps/quarto.lua b/lua/custom/keymaps/quarto.lua new file mode 100644 index 0000000..47d73f9 --- /dev/null +++ b/lua/custom/keymaps/quarto.lua @@ -0,0 +1,13 @@ +-- Quarto mappings +-- + +local wk = require 'which-key' + +wk.add { + mode = { 'n', 'v', 'i' }, + { 'q', group = '[Q]uarto' }, -- group + { 'qp', 'QuartoPreview', desc = '[Q]uarto [P]review' }, +} + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/plugins/keymaps-helper.lua b/lua/custom/plugins/keymaps-helper.lua new file mode 100644 index 0000000..703342b --- /dev/null +++ b/lua/custom/plugins/keymaps-helper.lua @@ -0,0 +1,17 @@ +-- Keymapping helper module +-- + +local M = {} + +local function map(mode, key, func, opts) + vim.keymap.set(mode, key, func, opts) +end + +function M.nmap(key, effect, desc) + map('n', key, effect, { silent = true, noremap = true, desc = desc }) +end + +return M + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/plugins/neotree-helper.lua b/lua/custom/plugins/neotree-helper.lua index 83db40f..98a41cc 100644 --- a/lua/custom/plugins/neotree-helper.lua +++ b/lua/custom/plugins/neotree-helper.lua @@ -30,10 +30,11 @@ function M.smart_open() vim.cmd('Neotree toggle reveal=false position=float dir=' .. vim.fn.expand '~') -- Si c'est un fichier réel, révéler le fichier dans l'arborescence elseif is_real_file and bufname ~= '' then - vim.cmd 'Neotree position=left reveal=true' - -- Sinon, ouvrir dans le répertoire de travail courant + vim.cmd('Neotree toggle position=left reveal=true dir=' .. vim.fn.expand '%:p:h') + -- vim.cmd 'Neotree position=left reveal=true' + -- Sinon, ouvrir dans le répertoire de travail courant else - vim.cmd('Neotree position=left reveal_force_cwd=true dir=' .. vim.fn.getcwd()) + vim.cmd('Neotree toggle position=left reveal_force_cwd=true dir=' .. vim.fn.getcwd()) end end @@ -85,4 +86,3 @@ return M -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et - diff --git a/lua/kickstart/core/keymaps.lua b/lua/kickstart/core/keymaps.lua index 589cb48..a0ebbc9 100644 --- a/lua/kickstart/core/keymaps.lua +++ b/lua/kickstart/core/keymaps.lua @@ -6,7 +6,7 @@ vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic keymaps -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) +-- vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier -- for people to discover. Otherwise, you normally need to press , which @@ -38,4 +38,5 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the upper win -- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) -- The line beneath this is called `modeline`. See `:help modeline` --- vim: ts=2 sts=2 sw=2 et \ No newline at end of file +-- vim: ts=2 sts=2 sw=2 et + diff --git a/lua/kickstart/core/lazy-plugins.lua b/lua/kickstart/core/lazy-plugins.lua index 8c7d966..a06bd93 100644 --- a/lua/kickstart/core/lazy-plugins.lua +++ b/lua/kickstart/core/lazy-plugins.lua @@ -14,11 +14,11 @@ require('lazy').setup({ 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically require 'kickstart.plugins.mini', + require 'kickstart.plugins.snacks', -- for use with neo-tree require 'kickstart.plugins.noice', + require 'kickstart.plugins.treesitter', require 'kickstart.plugins.telescope', require 'kickstart.plugins.neo-tree', - require 'kickstart.plugins.snacks', - require 'kickstart.plugins.treesitter', require 'kickstart.plugins.lsp', require 'kickstart.plugins.autopairs', require 'kickstart.plugins.autoformat', diff --git a/lua/kickstart/plugins/autoformat.lua b/lua/kickstart/plugins/autoformat.lua index 894bd46..ab62227 100644 --- a/lua/kickstart/plugins/autoformat.lua +++ b/lua/kickstart/plugins/autoformat.lua @@ -8,12 +8,12 @@ return { cmd = { 'ConformInfo' }, keys = { { - 'f', + 'bf', function() require('conform').format { async = true, lsp_format = 'fallback' } end, mode = '', - desc = '[F]ormat buffer', + desc = '[F]ormat [B]uffer', }, }, opts = { @@ -42,4 +42,5 @@ return { }, }, }, -} \ No newline at end of file +} + diff --git a/lua/kickstart/plugins/mini.lua b/lua/kickstart/plugins/mini.lua index 09acfb8..3e0d7df 100644 --- a/lua/kickstart/plugins/mini.lua +++ b/lua/kickstart/plugins/mini.lua @@ -42,12 +42,12 @@ return { evaluate_single = true, header = table.concat(logo.neovim1, '\n'), items = { - { action = 'edit ~/.config/nvim/init.lua', name = ' Configuration', section = 'Configuration' }, - { action = 'Telescope find_files', name = '󰱼 Rechercher fichier', section = 'Telescope' }, - { action = 'Telescope oldfiles', name = '󰋚 Fichiers récents', section = 'Telescope' }, - { action = 'Telescope live_grep', name = '󰱼 Rechercher texte', section = 'Telescope' }, - { action = 'e .', name = ' Ouvrir', section = 'Fichiers' }, - { action = 'qa', name = '󰗼 Quitter', section = 'Quitter' }, + { action = 'Neotree reveal=true position=float dir=~/.config/nvim/', name = ' Configuration', section = 'General' }, + { action = 'e .', name = ' Open', section = 'Files' }, + { action = 'Telescope find_files', name = '󰱼 Find file', section = 'Files' }, + { action = 'Telescope oldfiles', name = '󰋚 Recent files', section = 'Files' }, + { action = 'Telescope live_grep', name = '󰱼 Find text', section = 'Files' }, + { action = 'qa', name = '󰗼 Quit', section = 'General' }, }, content_hooks = { require('mini.starter').gen_hook.adding_bullet '󰐊 ', @@ -64,7 +64,7 @@ return { commenter.setup { mappings = { comment = 'c', - comment_line = 'cl', + comment_line = 'c', comment_visual = 'c', textobject = 'c', }, diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index afcedfb..5905fad 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -4,72 +4,82 @@ local neotree_helper = require 'custom.plugins.neotree-helper' return { - 'nvim-neo-tree/neo-tree.nvim', - version = '*', - dependencies = { - 'nvim-lua/plenary.nvim', - 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended - 'MunifTanjim/nui.nvim', - 'folke/snacks.nvim', -- optional for image preview - 'saifulapm/neotree-file-nesting-config', -- optional for VSCode like file nesting - }, - lazy = false, - keys = { - -- { '', ':Neotree reveal', desc = 'NeoTree reveal', silent = true }, - }, - opts = { - hide_root_node = true, -- recommanded config for VSCode like file nesting - retain_hidden_root_indent = true, -- recommanded config for VSCode like file nesting - filesystem = { - filtered_items = { - show_hidden_count = false, -- recommanded config for VSCode like file nesting - never_show = { -- recommanded config for VSCode like file nesting - '.DS_Store', - }, - }, - window = { - mappings = { - [''] = { - 'close_window', - desc = 'close neo-tree', - }, - ['d'] = { - 'trash', - desc = 'trash file', + { + 'nvim-neo-tree/neo-tree.nvim', + version = '*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended + 'MunifTanjim/nui.nvim', + 'folke/snacks.nvim', -- optional for image preview + 'saifulapm/neotree-file-nesting-config', -- optional for VSCode like file nesting + }, + lazy = false, + keys = { + -- { '', ':Neotree toggle reveal', desc = 'NeoTree reveal', silent = true }, + }, + opts = { + hide_root_node = true, -- recommanded config for VSCode like file nesting + retain_hidden_root_indent = true, -- recommanded config for VSCode like file nesting + filesystem = { + filtered_items = { + show_hidden_count = false, -- recommanded config for VSCode like file nesting + never_show = { -- recommanded config for VSCode like file nesting + '.DS_Store', }, }, + window = { + mappings = { + -- [''] = { + -- 'close_window', + -- desc = 'close neo-tree', + -- }, + ['d'] = { + 'trash', + desc = 'trash file', + }, + ['P'] = { + 'toggle_preview', + desc = 'preview image', + config = { + use_float = false, + use_snacks_image = true, + }, + }, + }, + }, + commands = { + trash = neotree_helper.trash, + trash_visual = neotree_helper.trash_visual, + }, }, - commands = { - trash = neotree_helper.trash, - trash_visual = neotree_helper.trash_visual, + -- recommanded config for VSCode like file nesting + default_component_configs = { + indent = { + with_expanders = true, + expander_collapsed = '', + expander_expanded = '', + }, + }, + event_handlers = { + { + event = 'file_opened', + handler = function() + -- auto close + -- vim.cmd 'Neotree close' + -- or + require('neo-tree.command').execute { action = 'close' } + end, + }, }, }, -- recommanded config for VSCode like file nesting - default_component_configs = { - indent = { - with_expanders = true, - expander_collapsed = '', - expander_expanded = '', - }, - }, - event_handlers = { - { - event = 'file_opened', - handler = function() - -- auto close - -- vim.cmd 'Neotree close' - -- or - require('neo-tree.command').execute { action = 'close' } - end, - }, - }, + config = function(_, opts) + -- Adding rules from plugin + opts.nesting_rules = require('neotree-file-nesting-config').nesting_rules + require('neo-tree').setup(opts) + end, }, - -- recommanded config for VSCode like file nesting - config = function(_, opts) - -- Adding rules from plugin - opts.nesting_rules = require('neotree-file-nesting-config').nesting_rules - require('neo-tree').setup(opts) - end, } -- The line beneath this is called `modeline`. See `:help modeline` diff --git a/lua/kickstart/plugins/quarto.lua b/lua/kickstart/plugins/quarto.lua index 9fb2958..867a14f 100644 --- a/lua/kickstart/plugins/quarto.lua +++ b/lua/kickstart/plugins/quarto.lua @@ -1,5 +1,8 @@ --- Quarto --- https://github.com/quarto-dev/quarto-nvim +-- Quarto and other tools to use with +-- quarto: https://github.com/quarto-dev/quarto-nvim +-- vim-slime: https://github.com/jpalardy/vim-slime +-- molten: https://github.com/benlubas/molten-nvim +-- return { { @@ -9,4 +12,96 @@ return { 'nvim-treesitter/nvim-treesitter', }, }, + -- { + -- 'jpalardy/vim-slime', + -- init = function() + -- vim.g.slime_target = 'kitty' + -- vim.g.slime_no_mappings = 1 + -- end, + -- }, + -- { + -- 'benlubas/molten-nvim', + -- version = '^1.0.0', -- use version <2.0.0 to avoid breaking changes + -- dependencies = { '3rd/image.nvim' }, + -- build = ':UpdateRemotePlugins', + -- init = function() + -- -- these are examples, not defaults. Please see the readme + -- vim.g.molten_image_provider = 'image.nvim' + -- vim.g.molten_output_win_max_height = 20 + -- end, + -- }, + -- { + -- '3rd/image.nvim', + -- build = false, -- so that it doesn't build the rock https://github.com/3rd/image.nvim/issues/91#issuecomment-2453430239 + -- opts = { + -- backend = 'kitty', + -- processor = 'magick_cli', -- or "magick_rock" + -- integrations = { + -- markdown = { + -- enabled = true, + -- clear_in_insert_mode = false, + -- download_remote_images = true, + -- only_render_image_at_cursor = false, + -- only_render_image_at_cursor_mode = 'popup', + -- floating_windows = false, -- if true, images will be rendered in floating markdown windows + -- filetypes = { 'markdown', 'vimwiki', 'quarto' }, -- markdown extensions (ie. quarto) can go here + -- }, + -- neorg = { + -- enabled = true, + -- filetypes = { 'norg' }, + -- }, + -- typst = { + -- enabled = true, + -- filetypes = { 'typst' }, + -- }, + -- html = { + -- enabled = false, + -- }, + -- css = { + -- enabled = false, + -- }, + -- }, + -- max_width = nil, + -- max_height = nil, + -- max_width_window_percentage = nil, + -- max_height_window_percentage = 50, + -- window_overlap_clear_enabled = false, -- toggles images when windows are overlapped + -- window_overlap_clear_ft_ignore = { 'cmp_menu', 'cmp_docs', 'snacks_notif', 'scrollview', 'scrollview_sign' }, + -- editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus + -- tmux_show_only_in_active_window = false, -- auto show/hide images in the correct Tmux window (needs visual-activity off) + -- hijack_file_patterns = { '*.png', '*.jpg', '*.jpeg', '*.gif', '*.webp', '*.avif' }, -- render image files as images when opened + -- }, + -- }, + -- { + -- 'HakonHarnes/img-clip.nvim', + -- event = 'BufEnter', + -- ft = { 'markdown', 'quarto', 'latex' }, + -- opts = { + -- -- add options here + -- -- or leave it empty to use the default settings + -- default = { + -- dir_path = 'img', + -- }, + -- filetypes = { + -- markdown = { + -- url_encode_path = true, + -- template = '![$CURSOR]($FILE_PATH)', + -- drag_and_drop = { + -- download_images = false, + -- }, + -- }, + -- quarto = { + -- url_encode_path = true, + -- template = '![$CURSOR]($FILE_PATH)', + -- drag_and_drop = { + -- download_images = false, + -- }, + -- }, + -- }, + -- }, + -- keys = { + -- -- suggested keymap + -- { 'p', 'PasteImage', desc = 'Paste image from system clipboard' }, + -- }, + -- }, }