123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- ;;; plugin.fnl - plugin configurations
- (import-macros {: bind! : hook!
- : use! : setup!
- : module-call!
- : module-fn! } :macros)
- (fn [use]
- ;; Packer
- (use! :wbthomason/packer.nvim)
- ;; tangerine.nvim (auto fennel compile)
- (use! :udayvir-singh/tangerine.nvim)
- ;; hy syntax
- (use! :hylang/vim-hy)
- ;; rainbow delimiters
- (use! :HiPhish/rainbow-delimiters.nvim)
- ;; Treesitter
- (use! :nvim-treesitter/nvim-treesitter
- :config
- (setup! :nvim-treesitter.configs
- ;:ensure_installed :all
- ;:sync_install false
- ;:auto_install true
- :highlight { :enable true
- :additional_vim_regex_highlighting false }
- :indent { :enable true }))
- ;; nightfox.nvim (colorscheme)
- (use! :EdenEast/nightfox.nvim
- :after :nvim-treesitter
- :config
- (vim.cmd.colorscheme :carbonfox))
- ;; Arm asm syntax
- (use! :https://git.zander.im/Zander671/arm-syntax-vim.git)
- ;; Devicons
- (use! :kyazdani42/nvim-web-devicons)
- ;; lualine.nvim
- (use! :nvim-lualine/lualine.nvim
- :after [ :nightfox.nvim :nvim-web-devicons ]
- :config
- (setup! :lualine
- :options { :section_separators ""
- :component_separators "│" }))
- ;; bufferline.nvim
- (use! :akinsho/bufferline.nvim
- :after [ :nvim-web-devicons :nightfox.nvim ]
- :config
- (setup! :bufferline
- :options {
- :always_show_bufferline false
- :mode :tabs
- :numbers :buffer-id
- :show_buffer_close_icons false
- :show_close_icon false }))
- (use! :nvim-lua/plenary.nvim
- :opt true
- :module :plenary)
- ;; telescope (a fuzzy finder)
- (use! :nvim-telescope/telescope.nvim
- :cmd :Telescope
- :module :telescope
- :requires [ { 1 :nvim-telescope/telescope-ui-select.nvim
- :opt true }
- { 1 :nvim-telescope/telescope-fzf-native.nvim
- :opt true
- :run :make }]
- :setup
- (module-call! :plugin.telescope :setup)
- :config
- (module-call! :plugin.telescope :config))
- ;; Trouble
- (use! :folke/trouble.nvim
- :cmd [ :Trouble
- :TroubleToggle
- :TroubleClose
- :TroubleRefresh ]
- :module :trouble
- :config
- (setup! :trouble))
- ;; Nvim surround
- (use! :kylechui/nvim-surround
- :config
- (setup! :nvim-surround))
- ;; Leap
- (use! :ggandor/leap.nvim
- :after :nvim-treesitter
- :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 }))
- ;; Leap spooky (remote operations)
- (use! :ggandor/leap-spooky.nvim
- :after :leap.nvim
- :config
- (setup! :leap-spooky))
- ;; Flit (leap for 'till' and 'forward' motions)
- (use! :ggandor/flit.nvim
- :after :leap.nvim
- :config
- (setup! :flit))
- ;; Comment.nvim
- (use! :numToStr/Comment.nvim
- :keys [ :gc :gb ]
- :config
- (setup! :Comment))
- ;; illuminate (same symbol highlight)
- (use! :RRethy/vim-illuminate
- :config
- (module-call! :illuminate
- :configure { :providers [
- "lsp"
- "treesitter"
- "ragex" ]
- :filetypes_denylist [
- :Trouble
- :markdown
- :text
- :gitconfig
- :gitignore ]
- :delay 0 })
- (hook! :FileType :lua #(vim.api.nvim_set_hl 0
- :IlluminatedWordText
- {})))
- ;; Snippy
- (use! :dcampos/nvim-snippy
- :config
- (let [map (require :snippy.mapping)]
- (bind! [ :i :s ] :<tab> ((. map :next) :<tab>))
- (bind! [ :i :s ] :<s-tab> (map.previous :<tab>))))
- ;; nvim-cmp (autocomplete)
- (use! :hrsh7th/nvim-cmp
- :requires [ :hrsh7th/cmp-buffer
- :hrsh7th/cmp-path
- :hrsh7th/cmp-cmdline
- :hrsh7th/cmp-nvim-lsp
- { 1 :ray-x/cmp-treesitter
- :after :nvim-cmp }
- :dcampos/cmp-snippy ]
- :config
- (module-call! :plugin.cmp :configure))
- ;; does what the name says, lets you pick icons
- (use! :ziontee113/icon-picker.nvim
- :cmd [ :IconPickerNormal :IconPickerYank ]
- :setup
- (bind! :n :<leader>ci "<cmd>IconPickerNormal<cr>")
- (bind! :n :<leader>cy "<cmd>IconPickerYank<cr>")
- :config
- (vim.cmd "PackerLoad telescope.nvim")
- (setup! :icon-picker
- :disable_legacy_commands true))
- (use! :jbyuki/nabla.nvim
- :module :nabla
- :setup
- (bind! :n :<leader>p #(module-call! :nabla :popup)))
- ; oil (file manager)
- (use! :stevearc/oil.nvim
- :config
- (setup! :oil
- :columns [ :icon :permissions :size: :mtime ]))
- ;; guess style from buffer
- (use! :NMAC427/guess-indent.nvim
- :config
- (setup! :guess-indent :auto_cmd true))
- ;(use! :edluffy/hologram.nvim
- ; :config
- ; (setup! :hologram
- ; :auto_display true))
- ;; lspconfig
- (use! :neovim/nvim-lspconfig
- :after :cmp-nvim-lsp
- :config
- (module-call! :plugin.lsp :configure))
- ;; null-ls.nvim
- (use! :nvimtools/none-ls.nvim
- :after :nvim-lspconfig
- :config
- (module-call! :plugin.lsp :setup-null-ls))
- ;; nvim-jdtls
- (use! :mfussenegger/nvim-jdtls
- :config
- (module-call! :plugin.jdtls :configure))
- ;; formatter.nvim
- ;(use! :mhartington/formatter.nvim
- ; :cmd [ :Format :FormatWrite ]
- ; :setup
- ; (bind! :n :<leader>o "<cmd>Format<cr>")
- ; (bind! :v :<leader>o ":Format<cr>")
- ; :config
- ; (setup! :formatter
- ; :logging true
- ; :log_level _G.vim.log.levels.WA;RN
- ; :filetype {
- ; :c [ (module-fn! :formatter.filetypes.c :astyle) ]
- ; :cpp [ (module-fn! :formatter.filetypes.cpp :astyle) ]
- ; :cmake [
- ; (module-fn! :formatter.filetypes.cmake :cmakeformat) ]
- ; :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 [ "-" ]})]}))
- ;; Sync all packages on first launch
- (if _G.first_launch
- (module-call! :packer :sync)))
|