-- quarto -- -- Quarto and other tools to use with. -- Quarto-nvim provides tools for working on Quarto manuscripts in Neovim. You can get started with Quarto here. -- -- quarto: https://github.com/quarto-dev/quarto-nvim -- vim-slime: https://github.com/jpalardy/vim-slime -- molten: https://github.com/benlubas/molten-nvim -- return { { 'quarto-dev/quarto-nvim', dev = false, dependencies = { 'jmbuhr/otter.nvim', 'nvim-treesitter/nvim-treesitter', 'jpalardy/vim-slime', -- optional }, opts = { lspFeatures = { enabled = true, chunks = 'curly', languages = { 'r', 'python', 'julia', 'bash', 'html' }, diagnostics = { enabled = true, triggers = { 'BufWritePost' }, }, completion = { enabled = true, }, }, codeRunner = { enabled = true, default_method = 'slime', -- "molten", "slime", "iron" or ft_runners = {}, -- filetype to runner, ie. `{ python = "molten" }`. -- Takes precedence over `default_method` never_run = { 'yaml' }, -- filetypes which are never sent to a code runner }, }, }, { -- send code from python/r/qmd documets to a terminal or REPL -- like ipython, R, bash 'jpalardy/vim-slime', dev = false, init = function() vim.b['quarto_is_python_chunk'] = false Quarto_is_in_python_chunk = function() require('otter.tools.functions').is_otter_language_context 'python' end vim.cmd [[ let g:slime_dispatch_ipython_pause = 100 function SlimeOverride_EscapeText_quarto(text) call v:lua.Quarto_is_in_python_chunk() if exists('g:slime_python_ipython') && len(split(a:text,"\n")) > 1 && b:quarto_is_python_chunk && !(exists('b:quarto_is_r_mode') && b:quarto_is_r_mode) return ["%cpaste -q\n", g:slime_dispatch_ipython_pause, a:text, "--", "\n"] else if exists('b:quarto_is_r_mode') && b:quarto_is_r_mode && b:quarto_is_python_chunk return [a:text, "\n"] else return [a:text] end end endfunction ]] vim.g.slime_target = 'neovim' vim.g.slime_no_mappings = true vim.g.slime_python_ipython = 1 end, config = function() vim.g.slime_input_pid = false vim.g.slime_suggest_default = true vim.g.slime_menu_config = false vim.g.slime_neovim_ignore_unlisted = true -- local function mark_terminal() -- local job_id = vim.b.terminal_job_id -- vim.print('job_id: ' .. job_id) -- end -- -- local function set_terminal() -- vim.fn.call('slime#config', {}) -- end -- vim.keymap.set('n', 'cm', mark_terminal, { desc = '[m]ark terminal' }) -- vim.keymap.set('n', 'cs', set_terminal, { desc = '[s]et terminal' }) end, opts = { debug = true, }, }, { 'benlubas/molten-nvim', dev = false, enabled = true, version = '^1.0.0', -- use version <2.0.0 to avoid breaking changes build = ':UpdateRemotePlugins', init = function() vim.g.molten_image_provider = 'image.nvim' -- vim.g.molten_output_win_max_height = 20 vim.g.molten_auto_open_output = true -- vim.g.molten_auto_open_html_in_browser = true vim.g.molten_tick_rate = 200 vim.g.molten_output_win_col = math.floor((vim.o.columns - vim.o.columns * 0.9) / 2) vim.g.molten_output_win_max_width = math.floor(vim.o.columns * 0.9) vim.g.molten_output_win_border = { '╭', '─', '╮', '│', '╯', '─', '╰', '│' } vim.g.molten_use_border_highlights = true vim.g.molten_output_win_style = 'minimal' -- Style minimal pour la fenêtre vim.g.molten_output_win_hide_on_leave = false -- Garder la fenêtre visible après avoir quitté end, config = function() -- local init = function() -- local quarto_cfg = require('quarto.config').config -- quarto_cfg.codeRunner.default_method = 'molten' -- vim.cmd [[MoltenInit]] -- end -- local deinit = function() -- local quarto_cfg = require('quarto.config').config -- quarto_cfg.codeRunner.default_method = 'slime' -- vim.cmd [[MoltenDeinit]] -- end -- vim.keymap.set('n', 'mi', init, { silent = true, desc = 'Initialize molten' }) -- vim.keymap.set('n', 'md', deinit, { silent = true, desc = 'Stop molten' }) -- vim.keymap.set('n', 'mp', ':MoltenImagePopup', { silent = true, desc = 'molten image popup' }) -- vim.keymap.set('n', 'mb', ':MoltenOpenInBrowser', { silent = true, desc = 'molten open in browser' }) -- vim.keymap.set('n', 'mh', ':MoltenHideOutput', { silent = true, desc = 'hide output' }) -- vim.keymap.set('n', 'ms', ':noautocmd MoltenEnterOutput', { silent = true, desc = 'show/enter output' }) end, opts = { auto_scroll = true, -- jupyter_command = '/home/jeff/.asdf/shims/jupyter', }, }, { '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 = true, -- 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 = 70, 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' }, -- }, -- }, }