diff --git a/doc/tags b/doc/tags index 61767e4..f84bd12 100644 --- a/doc/tags +++ b/doc/tags @@ -1,3 +1,11 @@ -QuartoPreview quarto.txt /*QuartoPreview* -quarto.nvim quarto.txt /*quarto.nvim* -quarto.quartoPreview() quarto.txt /*quarto.quartoPreview()* +quarto-links quarto.txt /*quarto-links* +quarto-quarto-nvim quarto.txt /*quarto-quarto-nvim* +quarto-quarto-nvim-available-commands quarto.txt /*quarto-quarto-nvim-available-commands* +quarto-quarto-nvim-language-support quarto.txt /*quarto-quarto-nvim-language-support* +quarto-quarto-nvim-recommended-plugins quarto.txt /*quarto-quarto-nvim-recommended-plugins* +quarto-quarto-nvim-running-code quarto.txt /*quarto-quarto-nvim-running-code* +quarto-quarto-nvim-setup quarto.txt /*quarto-quarto-nvim-setup* +quarto-quarto-nvim-usage quarto.txt /*quarto-quarto-nvim-usage* +quarto-quarto-nvim-walkthrough quarto.txt /*quarto-quarto-nvim-walkthrough* +quarto-table-of-contents quarto.txt /*quarto-table-of-contents* +quarto.txt quarto.txt /*quarto.txt* diff --git a/ftplugin/quarto.lua b/ftplugin/quarto.lua index 9c499cd..e1dd0fb 100644 --- a/ftplugin/quarto.lua +++ b/ftplugin/quarto.lua @@ -1,12 +1,13 @@ +require('quarto.config') + vim.b.slime_cell_delimiter = '```' -- TODO: Workaround while nvim-treesitter doesn't link those anymore -- until our ouwn pandoc grammar is ready vim.treesitter.language.register('markdown', { 'quarto', 'rmd' }) -local config = require('quarto.config').config local quarto = require 'quarto' -if config.lspFeatures.enabled then +if QuartoConfig.lspFeatures.enabled then quarto.activate() end diff --git a/lua/quarto/config.lua b/lua/quarto/config.lua index 5f379ab..31ef3e9 100644 --- a/lua/quarto/config.lua +++ b/lua/quarto/config.lua @@ -1,6 +1,6 @@ -local M = {} -M.defaultConfig = { +---@class QuartoConfig +QuartoConfig = { debug = false, closePreviewOnExit = true, lspFeatures = { @@ -23,8 +23,3 @@ M.defaultConfig = { never_run = { 'yaml' }, -- filetypes which are never sent to a code runner }, } - --- use defaultConfig if not setup -M.config = M.config or M.defaultConfig - -return M diff --git a/lua/quarto/init.lua b/lua/quarto/init.lua index 7937415..f21c429 100644 --- a/lua/quarto/init.lua +++ b/lua/quarto/init.lua @@ -1,6 +1,9 @@ local M = {} + +-- globally available QuartoConfig table +require 'quarto.config' + local api = vim.api -local cfg = require 'quarto.config' local tools = require 'quarto.tools' local util = require 'quarto.util' @@ -91,7 +94,7 @@ function M.quartoPreview(opts) api.nvim_buf_set_var(0, 'quartoOutputBuf', quartoOutputBuf) -- Close preview terminal on exit of the Quarto buffer - if cfg.config and cfg.config.closePreviewOnExit then + if QuartoConfig.closePreviewOnExit then api.nvim_create_autocmd({ 'QuitPre', 'WinClosed' }, { buffer = api.nvim_get_current_buf(), group = api.nvim_create_augroup('quartoPreview', {}), @@ -173,7 +176,7 @@ M.activate = function() return end local tsquery = nil - if cfg.config.lspFeatures.chunks == 'curly' then + if QuartoConfig.lspFeatures.chunks == 'curly' then tsquery = [[ (fenced_code_block (info_string @@ -189,14 +192,14 @@ M.activate = function() ]] end - require('otter').activate(cfg.config.lspFeatures.languages, cfg.config.lspFeatures.completion.enabled, cfg.config.lspFeatures.diagnostics.enabled, tsquery) + require('otter').activate(QuartoConfig.lspFeatures.languages, QuartoConfig.lspFeatures.completion.enabled, QuartoConfig.lspFeatures.diagnostics.enabled, tsquery) end -- setup -M.setup = function(opt) - cfg.config = vim.tbl_deep_extend('force', cfg.defaultConfig, opt or {}) +M.setup = function(opts) + QuartoConfig = vim.tbl_deep_extend('force', QuartoConfig, opts or {}) - if cfg.config.codeRunner.enabled then + if QuartoConfig.codeRunner.enabled then -- setup top level run functions local runner = require 'quarto.runner' M.quartoSend = runner.run_cell diff --git a/lua/quarto/runner/init.lua b/lua/quarto/runner/init.lua index 0059b92..ff539d4 100644 --- a/lua/quarto/runner/init.lua +++ b/lua/quarto/runner/init.lua @@ -1,8 +1,9 @@ --- Code runner, configurable to use different engines. local Runner = {} +require('quarto.config') + local otterkeeper = require 'otter.keeper' -local config = require('quarto.config').config local no_code_found = 'No code chunks found for the current language, which is detected based on the current code block. Is your cursor in a code block?' @@ -27,7 +28,7 @@ local function extract_code_cells_in_range(lang, code_chunks, range) end else for l, lang_chunks in pairs(code_chunks) do - if vim.tbl_contains(config.codeRunner.never_run, l) then + if vim.tbl_contains(QuartoConfig.codeRunner.never_run, l) then goto continue end for _, chunk in ipairs(lang_chunks) do @@ -60,13 +61,13 @@ end ---@param opts table? local function send(cell, opts) opts = opts or { ignore_cols = false } - local runner = config.codeRunner.default_method - local ft_runners = config.codeRunner.ft_runners + local runner = QuartoConfig.codeRunner.default_method + local ft_runners = QuartoConfig.codeRunner.ft_runners if cell.lang ~= nil and ft_runners[cell.lang] ~= nil then runner = ft_runners[cell.lang] end - -- if user passes a fn to config.codeRunner.default_method, we use that. + -- if user passes a fn to QuartoConfig.codeRunner.default_method, we use that. -- (this also means fns are allowed as values in ft_runners) -- otherwise we lookup a string for pre-packaged runner function, e.g. "molten" if type(runner) == 'function' then