small updates
This commit is contained in:
@@ -290,7 +290,7 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
|
||||
workspace = special:keepass, on-created-empty:keepassxc
|
||||
windowrule = float, class:org.keepassxc.KeePassXC
|
||||
windowrule = noscreenshare, class:org.keepassxc.KeePassXC
|
||||
windowrule = size 60%, 60%, class:org.keepassxc.KeePassXC
|
||||
windowrule = size 60% 60%, class:org.keepassxc.KeePassXC
|
||||
windowrule = center, class:org.keepassxc.KeePassXC
|
||||
|
||||
## ========== Communication ==========
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
-- Minimal Markdown + math workflow (FOSS/KISS):
|
||||
-- - Blink completion of LaTeX symbols in Markdown
|
||||
-- - :MdPdf to compile current .md -> PDF via Pandoc (LuaLaTeX) and open in Zathura
|
||||
-- - Ensure Treesitter grammars for markdown
|
||||
|
||||
-- - :MdPdf for one-shot Pandoc -> PDF (LuaLaTeX) and open in Zathura (auto-reload)
|
||||
-- - :MdWatch / :MdWatchStop to rebuild on save via `entr`
|
||||
return {
|
||||
-- Extend blink.cmp sources so Markdown gets LaTeX symbol completion (inserts \alpha, not α)
|
||||
-- Markdown gets LaTeX symbol completion (inserts \alpha, not α)
|
||||
{
|
||||
"Saghen/blink.cmp",
|
||||
optional = true,
|
||||
@@ -17,7 +16,7 @@ return {
|
||||
end,
|
||||
},
|
||||
|
||||
-- Ensure Treesitter grammars for better Markdown editing
|
||||
-- Ensure Treesitter grammars for Markdown editing
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
@@ -28,47 +27,109 @@ return {
|
||||
end,
|
||||
},
|
||||
|
||||
-- Add a simple :MdPdf command and a keymap
|
||||
-- Commands + keymaps
|
||||
{
|
||||
"AstroNvim/astrocore",
|
||||
opts = {
|
||||
commands = {
|
||||
MdPdf = {
|
||||
function()
|
||||
local stem = vim.fn.expand "%:r"
|
||||
local ext = vim.fn.expand "%:e"
|
||||
if ext ~= "md" then
|
||||
vim.notify("MdPdf: open a Markdown file (*.md)", vim.log.levels.WARN)
|
||||
return
|
||||
init = function()
|
||||
local function have(bin) return vim.fn.executable(bin) == 1 end
|
||||
|
||||
local function pandoc_cmd(input_md)
|
||||
local stem = input_md:gsub("%.md$", "")
|
||||
local md = vim.fn.shellescape(input_md)
|
||||
local pdf = vim.fn.shellescape(stem .. ".pdf")
|
||||
local cmd = ("pandoc %s -o %s --from=markdown+tex_math_dollars+raw_tex --pdf-engine=lualatex --citeproc"):format(
|
||||
md,
|
||||
pdf
|
||||
)
|
||||
return cmd, (stem .. ".pdf")
|
||||
end
|
||||
|
||||
-- One-shot: build PDF and open Zathura once (it auto-reloads)
|
||||
vim.api.nvim_create_user_command("MdPdf", function()
|
||||
if not have "pandoc" then
|
||||
vim.notify("MdPdf: pandoc not found. Install pandoc.", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
local name = vim.api.nvim_buf_get_name(0)
|
||||
if name == "" or not name:match "%.md$" then
|
||||
vim.notify("MdPdf: open a Markdown (*.md) file", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
local cmd, pdf = pandoc_cmd(name)
|
||||
vim.fn.jobstart({ "sh", "-c", cmd }, {
|
||||
detach = true,
|
||||
on_exit = function()
|
||||
if have "zathura" and not vim.g._mdpdf_zathura_opened then
|
||||
vim.g._mdpdf_zathura_opened = true
|
||||
vim.fn.jobstart({ "zathura", "--fork", pdf }, { detach = true })
|
||||
end
|
||||
local cmd = {
|
||||
"pandoc",
|
||||
stem .. ".md",
|
||||
"-o",
|
||||
stem .. ".pdf",
|
||||
"--from=markdown+tex_math_dollars+raw_tex",
|
||||
"--pdf-engine=lualatex",
|
||||
"--citeproc",
|
||||
}
|
||||
vim.fn.jobstart(cmd, {
|
||||
detach = true,
|
||||
on_exit = function()
|
||||
-- Open Zathura only once per session; it will auto-reload on subsequent builds
|
||||
if not vim.g._mdpdf_zathura_opened then
|
||||
vim.g._mdpdf_zathura_opened = true
|
||||
vim.fn.jobstart({ "zathura", "--fork", stem .. ".pdf" }, { detach = true })
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
desc = "Pandoc → PDF (LuaLaTeX) and open in Zathura",
|
||||
},
|
||||
},
|
||||
mappings = {
|
||||
n = {
|
||||
["<leader>mp"] = { "<cmd>MdPdf<cr>", desc = "Markdown → PDF (Pandoc)" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end, {})
|
||||
|
||||
-- Continuous: watch with entr and rebuild on change
|
||||
vim.api.nvim_create_user_command("MdWatch", function()
|
||||
if not have "pandoc" then
|
||||
vim.notify("MdWatch: pandoc not found. Install pandoc.", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
if not have "entr" then
|
||||
vim.notify("MdWatch: entr not found. Install entr.", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
if name == "" or not name:match "%.md$" then
|
||||
vim.notify("MdWatch: open a Markdown (*.md) file", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
|
||||
-- First build (also opens Zathura once)
|
||||
vim.cmd "MdPdf"
|
||||
|
||||
local cmd, _ = pandoc_cmd(name)
|
||||
local qfile = vim.fn.shellescape(name)
|
||||
local pipeline = ("printf %%s\\n %s | entr -r sh -c %s"):format(qfile, vim.fn.shellescape(cmd))
|
||||
local jobid = vim.fn.jobstart({ "sh", "-c", pipeline }, { detach = false })
|
||||
if jobid <= 0 then
|
||||
vim.notify("MdWatch: failed to start entr", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
vim.b.md_kiss_watch_job = jobid
|
||||
vim.notify("MdWatch: watching " .. name .. " (use :MdWatchStop to stop)", vim.log.levels.INFO)
|
||||
|
||||
-- Auto-stop when buffer unloads
|
||||
vim.api.nvim_create_autocmd({ "BufUnload", "BufWipeout" }, {
|
||||
buffer = buf,
|
||||
once = true,
|
||||
callback = function()
|
||||
if vim.b.md_kiss_watch_job then pcall(vim.fn.jobstop, vim.b.md_kiss_watch_job) end
|
||||
end,
|
||||
})
|
||||
end, {})
|
||||
|
||||
vim.api.nvim_create_user_command("MdWatchStop", function()
|
||||
local job = vim.b.md_kiss_watch_job
|
||||
if job then
|
||||
pcall(vim.fn.jobstop, job)
|
||||
vim.b.md_kiss_watch_job = nil
|
||||
vim.notify("MdWatch: stopped", vim.log.levels.INFO)
|
||||
else
|
||||
vim.notify("MdWatch: no watcher running for this buffer", vim.log.levels.WARN)
|
||||
end
|
||||
end, {})
|
||||
|
||||
-- Buffer-local keymaps for Markdown
|
||||
local group = vim.api.nvim_create_augroup("md_kiss_keys", { clear = true })
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
group = group,
|
||||
pattern = "markdown",
|
||||
callback = function(args)
|
||||
vim.keymap.set("n", "<leader>mP", "<cmd>MdPdf<CR>", { buffer = args.buf, desc = "Markdown → PDF (Pandoc)" })
|
||||
vim.keymap.set("n", "<leader>mw", "<cmd>MdWatch<CR>", { buffer = args.buf, desc = "Watch & rebuild (entr)" })
|
||||
vim.keymap.set("n", "<leader>mW", "<cmd>MdWatchStop<CR>", { buffer = args.buf, desc = "Stop watch" })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
# Added by Toolbox App
|
||||
export PATH="${PATH}:/home/mpuchstein/.local/share/JetBrains/Toolbox/scripts"
|
||||
|
||||
export PATH="${PATH}:/home/mpuchstein/.local/bin"
|
||||
export PATH="${PATH}:/home/mpuchstein/.cargo/bin"
|
||||
|
||||
@@ -41,3 +42,5 @@ export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init - zsh)"
|
||||
|
||||
export MAMBA_ROOT_PREFIX="$HOME/.mamba
|
||||
|
||||
Reference in New Issue
Block a user