76 lines
2.8 KiB
Lua
Executable File
76 lines
2.8 KiB
Lua
Executable File
return {
|
|
-- Enhanced Markdown editing (only for .md)
|
|
{
|
|
"godlygeek/tabular",
|
|
ft = "markdown",
|
|
},
|
|
{
|
|
"plasticboy/vim-markdown",
|
|
ft = "markdown",
|
|
dependencies = { "godlygeek/tabular" },
|
|
config = function()
|
|
-- Core settings
|
|
vim.g.vim_markdown_folding_disabled = 0
|
|
vim.g.vim_markdown_conceal = 1
|
|
vim.g.vim_markdown_toc_autofit = 1
|
|
vim.g.vim_markdown_strikethrough = 1
|
|
|
|
-- Prose-friendly wrapping + Pandoc exports (MD only)
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
pattern = "markdown",
|
|
callback = function()
|
|
-- Wrapping
|
|
vim.opt_local.wrap = true
|
|
vim.opt_local.linebreak = true
|
|
vim.opt_local.list = false
|
|
|
|
-- HTML preview/export
|
|
vim.keymap.set("n", "<leader>mh", function()
|
|
local input = vim.fn.expand("%")
|
|
local output = "/tmp/" .. vim.fn.fnamemodify(input, ":t:r") .. ".html"
|
|
vim.fn.system("pandoc " .. vim.fn.shellescape(input) .. " -o " .. vim.fn.shellescape(output) .. " --standalone --self-contained")
|
|
vim.fn.system("open " .. vim.fn.shellescape(output))
|
|
end, { desc = "Markdown to HTML Preview", buffer = true })
|
|
|
|
-- PDF export
|
|
vim.keymap.set("n", "<leader>mp", function()
|
|
local input = vim.fn.expand("%")
|
|
local output = vim.fn.fnamemodify(input, ":r") .. ".pdf"
|
|
vim.fn.system("pandoc " .. vim.fn.shellescape(input) .. " -o " .. vim.fn.shellescape(output) .. " --pdf-engine=pdflatex")
|
|
end, { desc = "Markdown to PDF", buffer = true })
|
|
|
|
-- TOC preview
|
|
vim.keymap.set("n", "<leader>mt", ":!pandoc % --toc -o /tmp/toc.html && open /tmp/toc.html<CR>", { desc = "Generate TOC Preview", buffer = true })
|
|
end,
|
|
})
|
|
end,
|
|
},
|
|
|
|
-- Live browser preview (MD + HTML)
|
|
{
|
|
"brianhuster/live-preview.nvim",
|
|
dependencies = { "nvim-telescope/telescope.nvim" },
|
|
ft = { "markdown", "html" }, -- Load for both
|
|
lazy = false,
|
|
opts = {
|
|
usage_title = "Usage: <leader>lp to start preview",
|
|
picker_title = "Select file to preview",
|
|
templates = { -- Basic MD render (for .md); HTML serves raw
|
|
md = {
|
|
command = "pandoc % -o /tmp/preview.html --standalone --self-contained", -- Use Pandoc for MD
|
|
extension = "html"
|
|
},
|
|
html = {
|
|
command = "echo 'Serving raw HTML'", -- No-op; serves file directly
|
|
extension = "html"
|
|
}
|
|
},
|
|
debounce = 300, -- Refresh delay post-save
|
|
},
|
|
keys = {
|
|
{ "<leader>lp", "<cmd>LivePreview start<cr>", desc = "Start Live Preview", ft = { "markdown", "html" } },
|
|
{ "<leader>ls", "<cmd>LivePreview stop<cr>", desc = "Stop Live Preview", ft = { "markdown", "html" } },
|
|
},
|
|
},
|
|
}
|