Compare commits

...

3 Commits

Author SHA1 Message Date
iGor milhit 2b4328cda4
wip plugins: configure environment for quarto
- Installs and configures the nvim-quarto plugin.
- Adds needed plugins and configuration from diving in the quarto
  kickstart configuration, which is damn huge.
- Adds the marksman parser for markdown, with its configuration.
- Adds the quarto filetype to the pandoc pluging.
- Loads the markdown snippets for the quarto filetype.
- Adds language support for treesitter.
- Installs and configure vim-slime plugin in order to execute emmbedded
  code (but it doesn't work as it misses a LOT of configuration).
- Documents very shortly the added plugins in the README.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2024-10-04 14:17:39 +02:00
iGor milhit e16ea4e3dc
plugins: improve slightly the treesitter config
- Adds an empty module options to avoid warning.
- Indents the disabled language list, in order to add some easily.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2024-10-04 08:24:33 +02:00
iGor milhit 6aaf345a8a
plugins: add zotcite and cmp-zotcite plugins
- Adds zotcite plugins (with completion).

Co-Authored-by: iGor milhit <igor@milhit.ch>
2024-10-04 08:24:33 +02:00
8 changed files with 120 additions and 15 deletions

View File

@ -102,6 +102,10 @@ I won't provide links for each of these plugins as they are easily to be found.
- `rainbow-csv.nvim` to manage CSV files. - `rainbow-csv.nvim` to manage CSV files.
- `venv-selector.nvim` to ease python virtual env. - `venv-selector.nvim` to ease python virtual env.
- `vim-grammalecte` to get a good grammar checker for French. - `vim-grammalecte` to get a good grammar checker for French.
- Quarto:
- `nvim-quarto` to add quarto environment configuration.
- `otter` for the embedded code completion.
- `vim-slime` for the embedded code execution.
<!-- references --> <!-- references -->

View File

@ -1,3 +1,7 @@
-- Temporary setting needed to make otter working
-- https://github.com/jmbuhr/otter.nvim/issues/179
vim.treesitter.language.register("markdown", { "quarto", "rmd" })
-- Search and replace -- Search and replace
-- Ignore case except when using a capital case -- Ignore case except when using a capital case
-- Highlight found occurrences -- Highlight found occurrences

View File

@ -17,6 +17,8 @@ return {
-- Import lspconfig -- Import lspconfig
local lspconfig = require("lspconfig") local lspconfig = require("lspconfig")
local util = require("lspconfig.util")
-- Import mason-tool-installer -- Import mason-tool-installer
local mason_tool_installer = require("mason-tool-installer") local mason_tool_installer = require("mason-tool-installer")
@ -51,6 +53,7 @@ return {
"html", "html",
"jsonls", "jsonls",
"lua_ls", "lua_ls",
"marksman",
"pylsp", "pylsp",
"yamlls", "yamlls",
}, },
@ -105,7 +108,7 @@ return {
end, end,
jsonls = function() jsonls = function()
lspconfig.lua_ls.setup({ lspconfig.jsonls.setup({
settings = { settings = {
json = { json = {
schemas = require("schemastore").json.schemas(), schemas = require("schemastore").json.schemas(),
@ -113,6 +116,22 @@ return {
} }
} }
}) })
end,
marksman = function()
lspconfig.marksman.setup({
setting = {
filetypes = {
"markdown",
"quarto",
},
root_dir = util.root_pattern(
'.git',
'.marksman.toml',
'_quarto.yml'
),
}
})
end end
}, },
}) })

View File

@ -39,9 +39,10 @@ return {
{ {
"vim-pandoc/vim-pandoc", "vim-pandoc/vim-pandoc",
ft = { ft = {
'markdown', "markdown",
'pandoc', "pandoc",
'pandoc.markdown' "pandoc.markdown",
"quarto",
}, },
lazy = true, lazy = true,
}, },

View File

@ -28,6 +28,9 @@ return {
"hrsh7th/cmp-emoji", "hrsh7th/cmp-emoji",
-- vs-code pictrograms -- vs-code pictrograms
"onsails/lspkind.nvim", "onsails/lspkind.nvim",
-- Completion source for code emmbedded in other documents
"jmbuh/otter.nvim",
}, },
-- Configure nvim-cmp -- Configure nvim-cmp
@ -40,16 +43,17 @@ return {
luasnip.config.setup { luasnip.config.setup {
-- Extend markdown snippets to pandoc filetype -- Extend markdown snippets to pandoc filetype
-- https://github.com/L3MON4D3/LuaSnip/issues/132#issuecomment-1101710309 -- https://github.com/L3MON4D3/LuaSnip/issues/132#issuecomment-1101731222
snippets = { snippets = {
markdown = {}, markdown = {},
}, },
luasnip.filetype_extend("pandoc", {"markdown"}), luasnip.filetype_extend("pandoc", {"markdown"}),
luasnip.filetype_extend("quarto", {"markdown"}),
} }
-- Load snippets from ~/.config/nvim/my_snippets/ -- Load snippets from ~/.config/nvim/my_snippets/
require("luasnip.loaders.from_lua").lazy_load( require("luasnip.loaders.from_lua").lazy_load(
{paths = "~/.config/nvim/my_snippets/"} { paths = "~/.config/nvim/my_snippets/" }
) )
require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load()
@ -107,6 +111,7 @@ return {
}, },
{ name = "path" }, { name = "path" },
{ name = "emoji" }, { name = "emoji" },
{ name = "cmp_zotcite"} -- zotcite (plugins/markdown/zotcite.lua)
}), }),
formatting = { formatting = {

View File

@ -0,0 +1,16 @@
-- Install and configure `quarto-nvim`
-- https://github.com/quarto-dev/quarto-nvim
return {
{
"quarto-dev/quarto-nvim",
lazy = true,
ft = {
"quarto",
},
dependencies = {
"jmbuhr/otter.nvim",
"nvim-treesitter/nvim-treesitter",
},
},
}

View File

@ -39,13 +39,16 @@ return {
-- Configure treesitter -- Configure treesitter
config = function() config = function()
---@diagnostic disable-next-line: missing-fields
local config = require("nvim-treesitter.configs") local config = require("nvim-treesitter.configs")
config.setup({ config.setup({
-- Enable color syntax -- Enable color syntax
highlight = { highlight = {
enable = true, enable = true,
disable = { "markdown" }, disable = {
"markdown"
},
}, },
-- Enable better indentation management -- Enable better indentation management
indent = { enable = true }, indent = { enable = true },
@ -53,23 +56,28 @@ return {
-- Installed and configured languages -- Installed and configured languages
ensure_installed = { ensure_installed = {
"bash", "bash",
"css",
"dot", "dot",
"gitignore", "gitignore",
"html", "html",
"javascript",
"json", "json",
"julia",
"latex", "latex",
"lua", "lua",
"markdown",
"markdown_inline",
"mermaid",
"norg",
"python", "python",
"query",
"r",
"typescript",
"vim", "vim",
"vimdoc",
"yaml", "yaml",
}, },
-- List of parsers to ignore installing
ignore_install = {
"markdown",
"markdown_inline"
},
-- Do not install parses synchronously -- Do not install parses synchronously
sync_install = false, sync_install = false,
@ -133,5 +141,3 @@ return {
}) })
end, end,
} }

View File

@ -0,0 +1,50 @@
-- Install and configure vim-slime
-- https://github.com/jpalardy/vim-slime
return {
'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', '<leader>cm', mark_terminal, { desc = '[m]ark terminal' })
vim.keymap.set('n', '<leader>cs', set_terminal, { desc = '[s]et terminal' })
end
}