85 lines
2.9 KiB
Lua
85 lines
2.9 KiB
Lua
-- VimTeX configuration with Sioyek as PDF viewer
|
|
local M = {}
|
|
|
|
function M.setup()
|
|
-- Use Sioyek as the PDF viewer
|
|
vim.g.vimtex_view_method = 'sioyek'
|
|
|
|
-- Sioyek executable (use 'sioyek' if in PATH)
|
|
vim.g.vimtex_view_sioyek_exe = 'sioyek'
|
|
|
|
-- Enable synctex for forward/inverse search
|
|
vim.g.vimtex_view_sioyek_sync = 1
|
|
|
|
-- Use custom wrapper script for inverse search (uses nvr instead of --headless)
|
|
vim.g.vimtex_callback_progpath = vim.fn.expand '~/dotfiles/bin/nvim-vimtex-callback'
|
|
|
|
-- Compiler settings
|
|
vim.g.vimtex_compiler_method = 'latexmk'
|
|
vim.g.vimtex_compiler_latexmk = {
|
|
build_dir = '',
|
|
callback = 1,
|
|
continuous = 1,
|
|
executable = 'latexmk',
|
|
options = {
|
|
'-verbose',
|
|
'-file-line-error',
|
|
'-synctex=1',
|
|
'-interaction=nonstopmode',
|
|
},
|
|
}
|
|
|
|
-- Quickfix settings
|
|
vim.g.vimtex_quickfix_mode = 0 -- Don't open quickfix automatically
|
|
|
|
-- Disable default mappings, we'll set our own
|
|
vim.g.vimtex_mappings_enabled = 1
|
|
|
|
-- TOC settings
|
|
vim.g.vimtex_toc_config = {
|
|
split_pos = 'vert leftabove',
|
|
split_width = 40,
|
|
show_help = 0,
|
|
}
|
|
|
|
-- Fold settings
|
|
vim.g.vimtex_fold_enabled = 0
|
|
|
|
-- Set up filetype-specific keymaps
|
|
vim.api.nvim_create_autocmd('FileType', {
|
|
pattern = { 'tex', 'latex' },
|
|
callback = function()
|
|
local opts = { buffer = true, silent = true }
|
|
|
|
-- Compilation
|
|
vim.keymap.set('n', '<localleader>ll', '<cmd>VimtexCompile<cr>', vim.tbl_extend('force', opts, { desc = 'Compile LaTeX' }))
|
|
vim.keymap.set('n', '<localleader>lk', '<cmd>VimtexStop<cr>', vim.tbl_extend('force', opts, { desc = 'Stop compilation' }))
|
|
vim.keymap.set('n', '<localleader>lc', '<cmd>VimtexClean<cr>', vim.tbl_extend('force', opts, { desc = 'Clean aux files' }))
|
|
vim.keymap.set('n', '<localleader>lC', '<cmd>VimtexClean!<cr>', vim.tbl_extend('force', opts, { desc = 'Clean all files' }))
|
|
|
|
-- View PDF (forward search) - save servername first for inverse search
|
|
vim.keymap.set('n', '<localleader>lv', function()
|
|
-- Save servername to file for inverse search callback
|
|
local servername = vim.v.servername
|
|
local f = io.open('/tmp/vimtex-servername', 'w')
|
|
if f then
|
|
f:write(servername)
|
|
f:close()
|
|
end
|
|
vim.cmd 'VimtexView'
|
|
end, vim.tbl_extend('force', opts, { desc = 'View PDF (forward search)' }))
|
|
|
|
-- TOC
|
|
vim.keymap.set('n', '<localleader>lt', '<cmd>VimtexTocToggle<cr>', vim.tbl_extend('force', opts, { desc = 'Toggle TOC' }))
|
|
|
|
-- Errors
|
|
vim.keymap.set('n', '<localleader>le', '<cmd>VimtexErrors<cr>', vim.tbl_extend('force', opts, { desc = 'Show errors' }))
|
|
|
|
-- Info
|
|
vim.keymap.set('n', '<localleader>li', '<cmd>VimtexInfo<cr>', vim.tbl_extend('force', opts, { desc = 'VimTeX info' }))
|
|
vim.keymap.set('n', '<localleader>ls', '<cmd>VimtexStatus<cr>', vim.tbl_extend('force', opts, { desc = 'Compilation status' }))
|
|
end,
|
|
})
|
|
end
|
|
|
|
return M
|