nvim/ftplugin: agda support

This commit is contained in:
Primrose 2026-01-24 21:22:12 +01:00
parent 9c6bfa1058
commit a1a918193a
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
3 changed files with 191 additions and 1 deletions

View file

@ -0,0 +1,184 @@
" Sourced from
" https://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.VIMEditing#:~:text=agda%2Dutf8%2Evim
" (Link is dead so use wayback machine)
" Superscripts
imap <buffer> ^0
imap <buffer> ^1 ¹
imap <buffer> ^2 ²
imap <buffer> ^3 ³
imap <buffer> ^4
imap <buffer> ^5
imap <buffer> ^6
imap <buffer> ^7
imap <buffer> ^8
imap <buffer> ^9
imap <buffer> ^+
imap <buffer> ^-
imap <buffer> ^=
imap <buffer> ^(
imap <buffer> ^)
imap <buffer> ^n
" Subscripts
imap <buffer> \_0
imap <buffer> \_1
imap <buffer> \_2
imap <buffer> \_3
imap <buffer> \_4
imap <buffer> \_5
imap <buffer> \_6
imap <buffer> \_7
imap <buffer> \_8
imap <buffer> \_9
imap <buffer> \_+
imap <buffer> \_-
imap <buffer> \_=
imap <buffer> \_(
imap <buffer> \_)
" Arrows
imap <buffer> ->
imap <buffer> <--
imap <buffer> <-->
imap <buffer> ==>
imap <buffer> <==
imap <buffer> <==>
"
" Symbols from mathematics and logic, LaTeX style
imap <buffer> \forall
imap <buffer> \exists
imap <buffer> \in
imap <buffer> \ni
imap <buffer> \empty
imap <buffer> \prod
imap <buffer> \sum
imap <buffer> \le
imap <buffer> \ge
imap <buffer> \pm ±
imap <buffer> \subset
imap <buffer> \subseteq
imap <buffer> \supset
imap <buffer> \supseteq
imap <buffer> \setminus
imap <buffer> \cap
imap <buffer> \cup
imap <buffer> \int
imap <buffer> \therefore
imap <buffer> \qed
imap <buffer> \1 𝟙
imap <buffer> \N
imap <buffer> \Z
imap <buffer> \C
imap <buffer> \Q
imap <buffer> \R
imap <buffer> \E 𝔼
imap <buffer> \F 𝔽
imap <buffer> \to
imap <buffer> \mapsto
imap <buffer> \infty
imap <buffer> \equiv
imap <buffer> \cong
imap <buffer> \:=
imap <buffer> \=: ≕
imap <buffer> \ne
imap <buffer> \approx
imap <buffer> \perp
imap <buffer> \not ̷
imap <buffer> \ldots
imap <buffer> \cdots
imap <buffer> \cdot
imap <buffer> \circ
imap <buffer> \times ×
imap <buffer> \oplus
imap <buffer> \langle
imap <buffer> \rangle
" Math
imap <buffer> \monus
" Greek alphabet...
imap <buffer> \alpha α
imap <buffer> \beta β
imap <buffer> \gamma γ
imap <buffer> \delta δ
imap <buffer> \epsilon ε
imap <buffer> \zeta ζ
imap <buffer> \nu η
imap <buffer> \theta θ
imap <buffer> \iota ι
imap <buffer> \kappa κ
imap <buffer> \lambda λ
imap <buffer> \mu μ
imap <buffer> \nu ν
imap <buffer> \xi ξ
imap <buffer> \omicron ο
imap <buffer> \pi π
imap <buffer> \rho ρ
imap <buffer> \stigma ς
imap <buffer> \sigma σ
imap <buffer> \tau τ
imap <buffer> \upsilon υ
imap <buffer> \phi ϕ
imap <buffer> \varphi φ
imap <buffer> \chi χ
imap <buffer> \psi ψ
imap <buffer> \omega ω
imap <buffer> \Alpha Α
imap <buffer> \Beta Β
imap <buffer> \Gamma Γ
imap <buffer> \Delta Δ
imap <buffer> \Epsilon Ε
imap <buffer> \Zeta Ζ
imap <buffer> \Nu Η
imap <buffer> \Theta Θ
imap <buffer> \Iota Ι
imap <buffer> \Kappa Κ
imap <buffer> \Lambda Λ
imap <buffer> \Mu Μ
imap <buffer> \Nu Ν
imap <buffer> \Xi Ξ
imap <buffer> \Omicron Ο
imap <buffer> \Pi Π
imap <buffer> \Rho Ρ
imap <buffer> \Sigma Σ
imap <buffer> \Tau Τ
imap <buffer> \Upsilon Υ
imap <buffer> \Phi Φ
imap <buffer> \Chi Χ
imap <buffer> \Psi Ψ
imap <buffer> \Omega Ω
" autoload
function! CornelisLoadWrapper()
if exists(":CornelisLoad") ==# 2
CornelisLoad
endif
endfunction
au BufReadPre *.agda call CornelisLoadWrapper()
au BufReadPre *.lagda* call CornelisLoadWrapper()
au BufRead,BufNewFile *.agda call AgdaFiletype()
au BufRead,BufNewFile *.lagda* call AgdaFiletype()
au QuitPre *.agda :CornelisCloseInfoWindows
au QuitPre *.lagda* :CornelisCloseInfoWindows
" autoreload at file write
au BufWritePost *.agda execute "normal! :CornelisLoad\<CR>"
au BufWritePost *.lagda* execute "normal! :CornelisLoad\<CR>"
" default cornelis config
nnoremap <buffer> <leader>l :CornelisLoad<CR>
nnoremap <buffer> <leader>r :CornelisRefine<CR>
nnoremap <buffer> <leader>d :CornelisMakeCase<CR>
nnoremap <buffer> <leader>, :CornelisTypeContext<CR>
nnoremap <buffer> <leader>. :CornelisTypeContextInfer<CR>
nnoremap <buffer> <leader>n :CornelisSolve<CR>
nnoremap <buffer> <leader>a :CornelisAuto<CR>
nnoremap <buffer> gd :CornelisGoToDefinition<CR>
nnoremap <buffer> [/ :CornelisPrevGoal<CR>
nnoremap <buffer> ]/ :CornelisNextGoal<CR>
nnoremap <buffer> <C-A> :CornelisInc<CR>
nnoremap <buffer> <C-X> :CornelisDec<CR>

View file

@ -0,0 +1 @@
.config/nvim/ftplugin/agda.vim

View file

@ -124,7 +124,12 @@ local plugins = {
"agda/cornelis",
name = "cornelis",
ft = "agda",
init = function() vim.g.cornelis_use_global_binary = 1 end,
init = function()
vim.g.cornelis_use_global_binary = 1
-- We don't use the default binding for shortcuts (see ftplugin)
-- Also, buffer reload is done in the ftplugin too
vim.g.cornelis_no_agda_input = 1
end,
dependencies = { "neovimhaskell/nvim-hs.vim", "kana/vim-textobj-user" },
version = "*",
},