From a1a918193a05daef7236ccffa8b9e36261f23df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sat, 24 Jan 2026 21:22:12 +0100 Subject: [PATCH] nvim/ftplugin: agda support --- .config/nvim/ftplugin/agda.vim | 184 ++++++++++++++++++++++++ .config/nvim/ftplugin/markdown.agda.vim | 1 + .config/nvim/lua/_lazy.lua | 7 +- 3 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 .config/nvim/ftplugin/agda.vim create mode 120000 .config/nvim/ftplugin/markdown.agda.vim diff --git a/.config/nvim/ftplugin/agda.vim b/.config/nvim/ftplugin/agda.vim new file mode 100644 index 00000000..74a49940 --- /dev/null +++ b/.config/nvim/ftplugin/agda.vim @@ -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 ^0 ⁰ +imap ^1 ¹ +imap ^2 ² +imap ^3 ³ +imap ^4 ⁴ +imap ^5 ⁵ +imap ^6 ⁶ +imap ^7 ⁷ +imap ^8 ⁸ +imap ^9 ⁹ +imap ^+ ⁺ +imap ^- ⁻ +imap ^= ⁼ +imap ^( ⁽ +imap ^) ⁾ +imap ^n ⁿ + +" Subscripts +imap \_0 ₀ +imap \_1 ₁ +imap \_2 ₂ +imap \_3 ₃ +imap \_4 ₄ +imap \_5 ₅ +imap \_6 ₆ +imap \_7 ₇ +imap \_8 ₈ +imap \_9 ₉ +imap \_+ ₊ +imap \_- ₋ +imap \_= ₌ +imap \_( ₍ +imap \_) ₎ + +" Arrows +imap -> → +imap <-- ← +imap <--> ↔ +imap ==> ⇒ +imap <== ⇐ +imap <==> ⇔ +" +" Symbols from mathematics and logic, LaTeX style +imap \forall ∀ +imap \exists ∃ +imap \in ∈ +imap \ni ∋ +imap \empty ∅ +imap \prod ∏ +imap \sum ∑ +imap \le ≤ +imap \ge ≥ +imap \pm ± +imap \subset ⊂ +imap \subseteq ⊆ +imap \supset ⊃ +imap \supseteq ⊇ +imap \setminus ∖ +imap \cap ∩ +imap \cup ∪ +imap \int ∫ +imap \therefore ∴ +imap \qed ∎ +imap \1 𝟙 +imap \N ℕ +imap \Z ℤ +imap \C ℂ +imap \Q ℚ +imap \R ℝ +imap \E 𝔼 +imap \F 𝔽 +imap \to → +imap \mapsto ↦ +imap \infty ∞ +imap \equiv ≡ +imap \cong ≅ +imap \:= ≔ +imap \=: ≕ +imap \ne ≠ +imap \approx ≈ +imap \perp ⊥ +imap \not ̷ +imap \ldots … +imap \cdots ⋯ +imap \cdot ⋅ +imap \circ ◦ +imap \times × +imap \oplus ⊕ +imap \langle ⟨ +imap \rangle ⟩ + +" Math +imap \monus ∸ + +" Greek alphabet... +imap \alpha α +imap \beta β +imap \gamma γ +imap \delta δ +imap \epsilon ε +imap \zeta ζ +imap \nu η +imap \theta θ +imap \iota ι +imap \kappa κ +imap \lambda λ +imap \mu μ +imap \nu ν +imap \xi ξ +imap \omicron ο +imap \pi π +imap \rho ρ +imap \stigma ς +imap \sigma σ +imap \tau τ +imap \upsilon υ +imap \phi ϕ +imap \varphi φ +imap \chi χ +imap \psi ψ +imap \omega ω + +imap \Alpha Α +imap \Beta Β +imap \Gamma Γ +imap \Delta Δ +imap \Epsilon Ε +imap \Zeta Ζ +imap \Nu Η +imap \Theta Θ +imap \Iota Ι +imap \Kappa Κ +imap \Lambda Λ +imap \Mu Μ +imap \Nu Ν +imap \Xi Ξ +imap \Omicron Ο +imap \Pi Π +imap \Rho Ρ +imap \Sigma Σ +imap \Tau Τ +imap \Upsilon Υ +imap \Phi Φ +imap \Chi Χ +imap \Psi Ψ +imap \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\" +au BufWritePost *.lagda* execute "normal! :CornelisLoad\" + +" default cornelis config +nnoremap l :CornelisLoad +nnoremap r :CornelisRefine +nnoremap d :CornelisMakeCase +nnoremap , :CornelisTypeContext +nnoremap . :CornelisTypeContextInfer +nnoremap n :CornelisSolve +nnoremap a :CornelisAuto +nnoremap gd :CornelisGoToDefinition +nnoremap [/ :CornelisPrevGoal +nnoremap ]/ :CornelisNextGoal +nnoremap :CornelisInc +nnoremap :CornelisDec diff --git a/.config/nvim/ftplugin/markdown.agda.vim b/.config/nvim/ftplugin/markdown.agda.vim new file mode 120000 index 00000000..72fd5ccf --- /dev/null +++ b/.config/nvim/ftplugin/markdown.agda.vim @@ -0,0 +1 @@ +.config/nvim/ftplugin/agda.vim \ No newline at end of file diff --git a/.config/nvim/lua/_lazy.lua b/.config/nvim/lua/_lazy.lua index 8784d253..c388d328 100644 --- a/.config/nvim/lua/_lazy.lua +++ b/.config/nvim/lua/_lazy.lua @@ -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 = "*", },