;; Plugin specs in Fennel ;; This file is compiled to lua/plugins/init.lua by nfnl (local repo 1) ;; lazy.nvim spec index for the git repo (e.g., "folke/plugin") (local lhs 1) ;; which-key spec index for the key sequence (see which-key below) [;; Tokyonight - Colorscheme {repo "folke/tokyonight.nvim" :lazy false :priority 1000 :config (fn [] (let [tokyonight (require :tokyonight)] (tokyonight.setup {:style "night" ; storm, moon, night, or day :transparent false :terminal_colors true})) (vim.cmd.colorscheme "tokyonight"))} ;; Conjure - Interactive REPL for Fennel, Clojure, Lisp, etc. {repo "Olical/conjure" :ft ["fennel" "clojure" "lisp" "scheme" "racket" "lua"] :config (fn [] ;; Enable HUD floating window (set vim.g.conjure#log#hud#enabled true))} ;; nvim-paredit - Structural editing for Lisp ;; Default keybindings: >)/<) slurp/barf forward, <(/>( slurp/barf backward ;; >e/f/), <), <(, >(, etc.) (paredit.setup {}) ;; Additional vim-sexp compatible bindings (local keymap vim.keymap.set) (local api paredit.api) ;; dsf - Splice (delete surrounding form) (keymap :n "dsf" api.unwrap_form_under_cursor {:desc "Splice (delete surrounding form)"}) ;; cse( cse) - Wrap in parens (keymap :n "cse(" #(api.wrap_element_under_cursor "(" ")") {:desc "Wrap element in ()"}) (keymap :n "cse)" #(api.wrap_element_under_cursor "(" ")") {:desc "Wrap element in ()"}) ;; cse[ cse] - Wrap in brackets (keymap :n "cse[" #(api.wrap_element_under_cursor "[" "]") {:desc "Wrap element in []"}) (keymap :n "cse]" #(api.wrap_element_under_cursor "[" "]") {:desc "Wrap element in []"}) ;; cse{ cse} - Wrap in braces (keymap :n "cse{" #(api.wrap_element_under_cursor "{" "}") {:desc "Wrap element in {}"}) (keymap :n "cse}" #(api.wrap_element_under_cursor "{" "}") {:desc "Wrap element in {}"}))} ;; Mason - Package manager for LSP servers, DAP servers, linters, formatters ;; Run :MasonInstall clojure_lsp lua_ls to install servers {repo "williamboman/mason.nvim" :cmd ["Mason" "MasonInstall" "MasonUpdate"] :build ":MasonUpdate" :opts {:ui {:border "rounded"}}} ;; which-key - Shows keybinding hints ;; lhs constant defined at top - which-key specs use index [1] for the key sequence {repo "folke/which-key.nvim" :event "VeryLazy" :opts {} :config (fn [_ opts] (local wk (require :which-key)) (wk.setup opts) (wk.add [{lhs "f" :group "find"} {lhs "b" :group "buffer"} {lhs "r" :group "refactor"} {lhs "c" :group "code"}]))}]