nix/config/nvim/lua/vimtex.lua

79 lines
2.7 KiB
Lua

-- VimTeX configuration
local M = {}
function M.setup()
-- Sioyek - cross-platform PDF viewer with vim-like keybindings
vim.g.vimtex_view_method = 'general'
vim.g.vimtex_view_general_viewer = 'sioyek'
vim.g.vimtex_view_general_options = '--forward-search-file @tex --forward-search-line @line @pdf'
-- Skim (macOS)
-- vim.g.vimtex_view_method = 'skim'
-- Compiler settings
vim.g.vimtex_compiler_method = 'latexmk'
vim.g.vimtex_compiler_latexmk = {
build_dir = 'build',
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 - saves servername for inverse search
vim.keymap.set('n', '<localleader>ll', function()
local f = io.open('/tmp/vimtex-servername', 'w')
if f then
f:write(vim.v.servername)
f:close()
end
vim.cmd 'VimtexCompile'
end, 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)
vim.keymap.set('n', '<localleader>lv', '<cmd>VimtexView<cr>', 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