2022-11-30 22:27:40 -08:00
|
|
|
;;; plugin.fnl - plugin configurations
|
|
|
|
|
|
|
|
(import-macros {: bind! : hook!
|
|
|
|
: use! : setup!
|
2023-02-07 10:39:31 -08:00
|
|
|
: module-call!
|
|
|
|
: module-fn! } :macros)
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
(fn [use]
|
|
|
|
;; Packer
|
|
|
|
(use! :wbthomason/packer.nvim)
|
|
|
|
|
|
|
|
;; tangerine.nvim (auto fennel compile)
|
|
|
|
(use! :udayvir-singh/tangerine.nvim)
|
|
|
|
|
|
|
|
;; Treesitter
|
|
|
|
(use! :nvim-treesitter/nvim-treesitter
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :nvim-treesitter.configs
|
2023-02-07 20:16:58 -08:00
|
|
|
;:ensure_installed :all
|
|
|
|
;:sync_install false
|
|
|
|
;:auto_install true
|
2022-12-30 21:18:28 -08:00
|
|
|
:highlight { :enable true
|
|
|
|
:additional_vim_regex_highlighting false }
|
|
|
|
:indent { :enable true }))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; nightfox.nvim (colorscheme)
|
|
|
|
(use! :EdenEast/nightfox.nvim
|
|
|
|
:after :nvim-treesitter
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(vim.cmd.colorscheme :carbonfox))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2023-02-08 01:24:34 -08:00
|
|
|
;; Arm asm syntax
|
|
|
|
(use! :https://git.zander.im/Zander671/arm-syntax-vim.git)
|
|
|
|
|
2022-11-30 22:27:40 -08:00
|
|
|
;; Devicons
|
|
|
|
(use! :kyazdani42/nvim-web-devicons)
|
|
|
|
|
|
|
|
;; lualine.nvim
|
|
|
|
(use! :nvim-lualine/lualine.nvim
|
|
|
|
:after [ :nightfox.nvim :nvim-web-devicons ]
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :lualine
|
|
|
|
:options { :section_separators ""
|
|
|
|
:component_separators "│" }
|
2023-02-07 20:16:58 -08:00
|
|
|
; :sections { :lualine_x [
|
|
|
|
; { 1 #(.. "recording @" (vim.fn.reg_recording))
|
|
|
|
; :cond #(not= (# (vim.fn.reg_recording)) 0) }
|
|
|
|
; :encoding
|
|
|
|
; :fileformat
|
|
|
|
; :filetype ]}
|
|
|
|
))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; bufferline.nvim
|
|
|
|
(use! :akinsho/bufferline.nvim
|
|
|
|
:after [ :nvim-web-devicons :nightfox.nvim ]
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :bufferline
|
|
|
|
:options {
|
|
|
|
:always_show_bufferline false
|
|
|
|
:mode :tabs
|
|
|
|
:numbers :buffer-id
|
|
|
|
:show_buffer_close_icons false
|
|
|
|
:show_close_icon false }))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2023-02-07 12:16:21 -08:00
|
|
|
;; telescope (a fuzzy finder)
|
|
|
|
(use! :nvim-telescope/telescope.nvim
|
2023-02-07 20:16:58 -08:00
|
|
|
:cmd :Telescope
|
|
|
|
:module :telescope
|
|
|
|
:requires [ { 1 :nvim-lua/plenary.nvim
|
|
|
|
:opt true }
|
|
|
|
{ 1 :nvim-telescope/telescope-ui-select.nvim
|
|
|
|
:opt true }
|
|
|
|
{ 1 :nvim-telescope/telescope-fzf-native.nvim
|
|
|
|
:opt true
|
|
|
|
:run :make }]
|
|
|
|
:setup
|
|
|
|
(bind! :n :<leader>fq "<cmd>Telescope quickfix<cr>")
|
|
|
|
(bind! :n :<leader>fr "<cmd>Telescope registers<cr>")
|
|
|
|
(bind! :n :<leader>fj "<cmd>Telescope jumplist<cr>")
|
|
|
|
(bind! :n :<leader>fa "<cmd>Telescope marks<cr>")
|
|
|
|
(bind! :n :<leader>fh "<cmd>Telescope help_tags<cr>")
|
|
|
|
(bind! :n :<leader>g "<cmd>Telescope live_grep<cr>")
|
|
|
|
(bind! :n :<leader>fg "<cmd>Telescope live_grep<cr>")
|
|
|
|
(bind! :n :<leader>d "<cmd>Telescope treesitter<cr>")
|
|
|
|
(bind! :n :<leader>b "<cmd>Telescope buffers<cr>")
|
|
|
|
(bind! :n :<leader>fu "<cmd>Telescope git_status<cr>")
|
|
|
|
(bind! :n :<leader>fm "<cmd>Telescope man_pages<cr>")
|
|
|
|
(bind! :n :<leader>fe "<cmd>Telescope diagnostics<cr>")
|
|
|
|
(bind! :n :<leader>fl "<cmd>Telescope loclist<cr>")
|
|
|
|
(bind! :n :<leader>fp "<cmd>Telescope spell_suggest<cr>")
|
|
|
|
(bind! :n :<leader>fo "<cmd>Telescope vim_options<cr>")
|
|
|
|
(bind! :n :<leader>c "<cmd>Telescope command_history<cr>")
|
|
|
|
(bind! :n :<leader>i "<cmd>Telescope find_files<cr>")
|
|
|
|
(bind! :n :<leader>i "<cmd>Telescope find_files<cr>")
|
|
|
|
(bind! :n :z= "<cmd>Telescope spell_suggest<cr>")
|
|
|
|
(fn list-git-or-default []
|
|
|
|
(let [code (os.execute "git rev-parse --is-inside-work-tree >/dev/null 2>&1")]
|
|
|
|
(if (= code 0)
|
|
|
|
(vim.cmd "Telescope git_files")
|
|
|
|
(vim.cmd "Telescope find_files"))))
|
|
|
|
(bind! :n :<leader>ff list-git-or-default)
|
|
|
|
(bind! :n :<leader>u list-git-or-default)
|
|
|
|
(fn jump-or-open-terminal []
|
|
|
|
"If no terminal buffer exists, create one. Otherwise, open new one."
|
|
|
|
(var term_count 0)
|
|
|
|
(var last_id 0)
|
|
|
|
(var terms [ ])
|
|
|
|
(each [_ id (pairs (vim.api.nvim_list_bufs))]
|
|
|
|
(let [name (vim.api.nvim_buf_get_name id)]
|
|
|
|
(when (vim.startswith name "term://")
|
|
|
|
(table.insert terms name)
|
|
|
|
(set term_count (+ term_count 1))
|
|
|
|
(set last_id id))))
|
|
|
|
(if (= term_count 0)
|
|
|
|
(vim.cmd.terminal)
|
|
|
|
(= term_count 1)
|
|
|
|
(vim.cmd.buffer last_id)
|
2023-02-14 19:17:19 -08:00
|
|
|
(vim.cmd "Telescope buffers default_text=term://")))
|
2023-02-07 20:16:58 -08:00
|
|
|
(bind! :n :<leader>t jump-or-open-terminal)
|
2023-02-07 12:16:21 -08:00
|
|
|
:config
|
2023-02-07 20:16:58 -08:00
|
|
|
(vim.cmd "PackerLoad plenary.nvim")
|
|
|
|
(vim.cmd "PackerLoad telescope-ui-select.nvim")
|
|
|
|
(vim.cmd "PackerLoad telescope-fzf-native.nvim")
|
|
|
|
(let [actions (require :telescope.actions)]
|
2023-02-07 12:16:21 -08:00
|
|
|
(setup! :telescope
|
|
|
|
:defaults {
|
|
|
|
:mappings {
|
|
|
|
:i { :<esc> actions.close
|
|
|
|
:<C-k> actions.move_selection_previous
|
|
|
|
:<C-j> actions.move_selection_next }
|
|
|
|
:n { :<C-k> actions.move_selection_previous
|
|
|
|
:<C-j> actions.move_selection_next }}}
|
|
|
|
:pickers {
|
|
|
|
:buffers {
|
|
|
|
;;:ignore_current_buffer true
|
2023-02-07 20:16:58 -08:00
|
|
|
:sort_lastused true }}
|
|
|
|
:extensions {
|
|
|
|
:ui-select [
|
|
|
|
(module-call! :telescope.themes :get_dropdown)
|
|
|
|
]
|
|
|
|
})
|
|
|
|
(module-call! :telescope :load_extension :ui-select)
|
|
|
|
(module-call! :telescope :load_extension :fzf)))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2023-02-07 22:31:05 -08:00
|
|
|
;; Trouble
|
|
|
|
(use! :folke/trouble.nvim
|
|
|
|
:cmd [ :Trouble
|
|
|
|
:TroubleToggle
|
|
|
|
:TroubleClose
|
|
|
|
:TroubleRefresh ]
|
|
|
|
:config
|
|
|
|
(setup! :trouble))
|
|
|
|
|
2022-11-30 22:27:40 -08:00
|
|
|
;; Nvim surround
|
|
|
|
(use! :kylechui/nvim-surround
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :nvim-surround))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; Leap
|
|
|
|
(use! :ggandor/leap.nvim
|
|
|
|
:after :nvim-treesitter
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
((. (require :leap) :add_default_mappings))
|
|
|
|
(bind! :o :z "<plug>(leap-forward-to)")
|
|
|
|
(bind! :o :Z "<plug>(leap-backward-to)")
|
|
|
|
(vim.api.nvim_set_hl 0 :LeapBackdrop { :link :Comment }))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; Leap spooky (remote operations)
|
|
|
|
(use! :ggandor/leap-spooky.nvim
|
|
|
|
:after :leap.nvim
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :leap-spooky))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; Flit (leap for 'till' and 'forward' motions)
|
|
|
|
(use! :ggandor/flit.nvim
|
|
|
|
:after :leap.nvim
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :flit))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; Comment.nvim
|
|
|
|
(use! :numToStr/Comment.nvim
|
2023-02-07 20:16:58 -08:00
|
|
|
:keys [ :gc :gb ]
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :Comment))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; nvim-find-other
|
|
|
|
(use! "https://git.zander.im/Zander671/nvim-find-other.git"
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :nvim-find-other
|
|
|
|
:c [ "h" "H" ]
|
|
|
|
:h [ "c" "C" "cpp" "cxx" "c++" "cc" ]
|
|
|
|
:cpp [ "hpp" "hxx" "h++" "hh" "h" "H" ]
|
|
|
|
:hpp [ "cpp" "cxx" "c++" "cc" ])
|
|
|
|
(let [find-other (require :nvim-find-other)]
|
|
|
|
(vim.api.nvim_create_user_command
|
|
|
|
"FindOtherFile"
|
|
|
|
find-other.find_other_current_buffer
|
|
|
|
{})
|
|
|
|
(bind! :n :go find-other.find_other_current_buffer)))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2022-12-07 03:39:47 -08:00
|
|
|
;; illuminate (same symbol highlight)
|
2022-11-30 22:27:40 -08:00
|
|
|
(use! :RRethy/vim-illuminate
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
2023-02-07 22:31:05 -08:00
|
|
|
(module-call! :illuminate
|
|
|
|
:configure { :providers [
|
|
|
|
"lsp"
|
|
|
|
"treesitter"
|
|
|
|
"ragex" ]
|
|
|
|
:filetypes_denylist [
|
|
|
|
:Trouble
|
|
|
|
:markdown
|
|
|
|
:text
|
|
|
|
:gitconfig
|
|
|
|
:gitignore ]
|
|
|
|
:delay 0 })
|
2022-12-30 21:18:28 -08:00
|
|
|
(hook! :FileType :lua #(vim.api.nvim_set_hl 0
|
|
|
|
:IlluminatedWordText
|
|
|
|
{})))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2022-12-07 03:39:47 -08:00
|
|
|
;; vlime (lisp environment)
|
|
|
|
(use! :vlime/vlime
|
2023-01-01 16:18:50 -08:00
|
|
|
:ft :lisp
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(set vim.g.vlime_cl_impl :my_sbcl)
|
|
|
|
(set vim.g.vlime_address [ "127.0.0.1" 52842 ])
|
|
|
|
(vim.cmd "function! VlimeBuildServerCommandFor_my_sbcl(vlime_loader, vlime_eval)
|
|
|
|
return [ \"/usr/bin/sbcl\",
|
|
|
|
\\ \"--load\", a:vlime_loader,
|
|
|
|
\\ \"--eval\", \"(vlime:main :port 52842)\" ]
|
|
|
|
endfunction"))
|
2022-12-07 03:39:47 -08:00
|
|
|
|
2022-11-30 22:27:40 -08:00
|
|
|
;; Snippy
|
|
|
|
(use! :dcampos/nvim-snippy
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(let [map (require :snippy.mapping)]
|
|
|
|
(bind! [ :i :s ] :<tab> ((. map :next) :<tab>))
|
|
|
|
(bind! [ :i :s ] :<s-tab> (map.previous :<tab>))))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; nvim-cmp (autocomplete)
|
|
|
|
(use! :hrsh7th/nvim-cmp
|
|
|
|
:requires [ :hrsh7th/cmp-buffer
|
|
|
|
:hrsh7th/cmp-path
|
|
|
|
:hrsh7th/cmp-cmdline
|
|
|
|
:hrsh7th/cmp-nvim-lsp
|
2022-12-07 03:39:47 -08:00
|
|
|
:HiPhish/nvim-cmp-vlime
|
2022-11-30 22:27:40 -08:00
|
|
|
{ 1 :ray-x/cmp-treesitter
|
|
|
|
:after :nvim-cmp }
|
|
|
|
:dcampos/cmp-snippy ]
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(module-call! :plugin.cmp :configure))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2023-01-01 16:18:50 -08:00
|
|
|
;; does what the name says, lets you pick icons
|
2022-12-31 01:45:54 -08:00
|
|
|
(use! :ziontee113/icon-picker.nvim
|
2023-01-01 16:18:50 -08:00
|
|
|
:cmd [ :IconPickerNormal :IconPickerYank ]
|
|
|
|
:setup
|
|
|
|
(bind! :n :<leader>ci "<cmd>IconPickerNormal<cr>")
|
|
|
|
(bind! :n :<leader>cy "<cmd>IconPickerYank<cr>")
|
2022-12-31 01:45:54 -08:00
|
|
|
:config
|
2023-02-07 20:16:58 -08:00
|
|
|
(vim.cmd "PackerLoad telescope.nvim")
|
2022-12-31 01:45:54 -08:00
|
|
|
(setup! :icon-picker
|
2023-01-01 16:18:50 -08:00
|
|
|
:disable_legacy_commands true))
|
2022-12-31 01:45:54 -08:00
|
|
|
|
2023-02-05 15:54:06 -08:00
|
|
|
(use! :jbyuki/nabla.nvim
|
|
|
|
:module :nabla
|
|
|
|
:setup
|
|
|
|
(bind! :n :<leader>p #(module-call! :nabla :popup)))
|
|
|
|
|
2022-12-09 00:23:02 -08:00
|
|
|
;; guess style from buffer
|
|
|
|
(use! :NMAC427/guess-indent.nvim
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(setup! :guess-indent :auto_cmd true))
|
2022-12-09 00:23:02 -08:00
|
|
|
|
2023-02-07 10:39:31 -08:00
|
|
|
;; formatter
|
|
|
|
(use! :mhartington/formatter.nvim
|
|
|
|
:cmd [ :Format :FormatWrite ]
|
|
|
|
:setup
|
|
|
|
(bind! :n :<leader>o "<cmd>Format<cr>")
|
2023-02-07 20:16:58 -08:00
|
|
|
(bind! :x :<leader>o ":Format<cr>")
|
2023-02-07 10:39:31 -08:00
|
|
|
:config
|
|
|
|
(setup! :formatter
|
|
|
|
:logging true
|
|
|
|
:log_level _G.vim.log.levels.WARN
|
|
|
|
:filetype {
|
|
|
|
:c [ (module-fn! :formatter.filetypes.c :astyle) ]
|
|
|
|
:cpp [ (module-fn! :formatter.filetypes.cpp :astyle) ]
|
|
|
|
:cmake [
|
|
|
|
(module-fn! :formatter.filetypes.cmake :cmakeformat) ]
|
2023-02-07 11:12:09 -08:00
|
|
|
:java [ (fn [] {:exe :astyle
|
|
|
|
:stdin true
|
|
|
|
:args [ :--mode=java ]}) ]
|
|
|
|
:sh [ (module-fn! :formatter.filetypes.sh :shfmt) ]
|
|
|
|
:rust [ (module-fn! :formatter.filetypes.rust :rustfmt) ]
|
|
|
|
:tex [ (module-fn! :formatter.filetypes.latex :latexindent) ]
|
|
|
|
:python [ (module-fn! :formatter.filetypes.python :yapf) ]
|
|
|
|
:json [ (module-fn! :formatter.filetypes.json :prettier) ]
|
|
|
|
:html [ (module-fn! :formatter.filetypes.html :prettier) ]
|
|
|
|
:css [ (module-fn! :formatter.filetypes.css :prettier) ]
|
|
|
|
:javascript [ (module-fn! :formatter.filetypes.javascript :prettier) ]
|
|
|
|
:markdown [
|
|
|
|
(module-fn! :formatter.filetypes.markdown :prettier ) ]
|
|
|
|
:fennel [ (fn [] {:exe :fnlfmt
|
|
|
|
:stdin true
|
|
|
|
:args [ "-" ]}) ]}))
|
2023-02-07 10:39:31 -08:00
|
|
|
|
2022-11-30 22:27:40 -08:00
|
|
|
;; lspconfig
|
|
|
|
(use! :neovim/nvim-lspconfig
|
2023-01-01 16:18:50 -08:00
|
|
|
:after :cmp-nvim-lsp
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(module-call! :plugin.lsp :configure))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
2023-02-06 12:53:11 -08:00
|
|
|
(use! :j-hui/fidget.nvim
|
|
|
|
:after :nvim-lspconfig
|
|
|
|
:config
|
|
|
|
(setup! :fidget))
|
|
|
|
|
2022-11-30 22:27:40 -08:00
|
|
|
;; nvim-jdtls
|
|
|
|
(use! :mfussenegger/nvim-jdtls
|
2023-02-07 20:16:58 -08:00
|
|
|
:ft :java
|
2022-11-30 22:27:40 -08:00
|
|
|
:after :nvim-lspconfig
|
2022-12-30 21:18:28 -08:00
|
|
|
:config
|
|
|
|
(module-call! :plugin.jdtls :configure))
|
2022-11-30 22:27:40 -08:00
|
|
|
|
|
|
|
;; Sync all packages on first launch
|
|
|
|
(if _G.first_launch
|
|
|
|
(module-call! :packer :sync)))
|