summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile9
-rw-r--r--README.md4
-rw-r--r--fnl/config/alpha.fnl41
-rw-r--r--fnl/config/autocmd.fnl32
-rw-r--r--fnl/config/autopairs.fnl21
-rw-r--r--fnl/config/better-escape.fnl8
-rw-r--r--fnl/config/bufferline.fnl69
-rw-r--r--fnl/config/cmp.fnl42
-rw-r--r--fnl/config/colorizer.fnl5
-rw-r--r--fnl/config/colorscheme.fnl8
-rw-r--r--fnl/config/gitsigns.fnl48
-rw-r--r--fnl/config/hop.fnl8
-rw-r--r--fnl/config/impatient.fnl5
-rw-r--r--fnl/config/init.fnl23
-rw-r--r--fnl/config/lsp/handlers.fnl61
-rw-r--r--fnl/config/lsp/init.fnl7
-rw-r--r--fnl/config/lsp/lsp-installer.fnl22
-rw-r--r--fnl/config/lsp/null-ls.fnl26
-rw-r--r--fnl/config/lsp/settings/jsonls.fnl12
-rw-r--r--fnl/config/lsp/settings/pyright.fnl4
-rw-r--r--fnl/config/lsp/settings/sumneko-lua.fnl23
-rw-r--r--fnl/config/lualine.fnl48
-rw-r--r--fnl/config/ncomment.fnl23
-rw-r--r--fnl/config/nvim-tree.fnl82
-rw-r--r--fnl/config/orgmode.fnl17
-rw-r--r--fnl/config/packer.fnl7
-rw-r--r--fnl/config/project.fnl19
-rw-r--r--fnl/config/spectre.fnl64
-rw-r--r--fnl/config/telescope.fnl83
-rw-r--r--fnl/config/treesitter.fnl32
-rw-r--r--fnl/config/which-key.fnl129
-rw-r--r--fnl/config/zen.fnl13
-rw-r--r--fnl/init.fnl6
-rw-r--r--fnl/install.fnl15
-rw-r--r--fnl/plugins.fnl64
-rw-r--r--fnl/settings/init.fnl2
-rw-r--r--fnl/settings/keymaps.fnl52
-rw-r--r--fnl/settings/options.fnl80
-rw-r--r--fnl/util.fnl12
-rw-r--r--init.lua34
-rw-r--r--lua/config/alpha.lua44
-rw-r--r--lua/config/autocommands.lua33
-rw-r--r--lua/config/autopairs.lua34
-rw-r--r--lua/config/bufferline.lua167
-rw-r--r--lua/config/cmp.lua133
-rw-r--r--lua/config/colorizer.lua16
-rw-r--r--lua/config/colorscheme.lua9
-rw-r--r--lua/config/comment.lua24
-rw-r--r--lua/config/gitsigns.lua75
-rw-r--r--lua/config/hop.lua8
-rw-r--r--lua/config/lsp/handlers.lua170
-rw-r--r--lua/config/lsp/init.lua10
-rw-r--r--lua/config/lsp/lsp-installer.lua34
-rw-r--r--lua/config/lsp/null-ls.lua38
-rw-r--r--lua/config/lsp/settings/pyright.lua12
-rw-r--r--lua/config/lsp/settings/sumneko_lua.lua18
-rw-r--r--lua/config/lualine.lua64
-rw-r--r--lua/config/spectre.lua135
-rw-r--r--lua/config/telescope.lua120
-rw-r--r--lua/config/treesitter.lua29
-rw-r--r--lua/config/whichkey.lua217
-rw-r--r--lua/config/zen.lua28
-rw-r--r--lua/settings/init.lua4
-rw-r--r--lua/settings/keymaps.lua59
-rw-r--r--lua/settings/options.lua48
66 files changed, 1257 insertions, 1533 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9f19f9e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/lua
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b4e3caa
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,9 @@
+.POSIX:
+
+install:
+ $(which nvim >/dev/null 2>&1 || @echo "Neovim not installed!" && exit 1)
+ $(hich luarocks >/dev/null 2>&1 || @echo "Luarocks not installed!" && exit 1)
+ $(huarocks list | @grep "fennel" || @echo "fennel is not installed" && exit 1)
+ nvim --headless +qa && nvim --headless -c "autocmd User PackerComplete quitall" -c "PackerSync"
+
+.PHONY: install
diff --git a/README.md b/README.md
index 72ae13b..44b5df1 100644
--- a/README.md
+++ b/README.md
@@ -24,3 +24,7 @@ fnm and node for lsp
   ├── plugins.lua # Table of all plugins.
└── settings # Neovim settings.
```
+
+## TODO
+-[ ] autocmd
+-[ ] cmp check if anything is missing
diff --git a/fnl/config/alpha.fnl b/fnl/config/alpha.fnl
new file mode 100644
index 0000000..4fb51ec
--- /dev/null
+++ b/fnl/config/alpha.fnl
@@ -0,0 +1,41 @@
+;; A customizable greeter.
+(module config.alpha {autoload {util util}})
+
+(def- ascii-art [" ##############..... ############## "
+ " ##############......############## "
+ " ##########..........########## "
+ " ##########........########## "
+ " ##########.......########## "
+ " ##########.....##########.. "
+ " ##########....##########..... "
+ " ..##########..##########......... "
+ " ....##########.#########............. "
+ " ..################JJJ............ "
+ " ################............. "
+ " ##############.JJJ.JJJJJJJJJJ "
+ " ############...JJ...JJ..JJ JJ "
+ " ##########....JJ...JJ..JJ JJ "
+ " ########......JJJ..JJJ JJJ JJJ "
+ " ###### ......... "
+ " ..... "
+ " . "])
+
+(let [alpha (util.load-plugin :alpha)]
+ (let [dashboard (require :alpha.themes.dashboard)]
+ (do
+ (set dashboard.section.header.val ascii-art)
+ (set dashboard.section.buttons.val
+ [(dashboard.button :f " Find file"
+ ":Telescope file_browser <CR>")
+ (dashboard.button :e " New file" ":ene <BAR> startinsert <CR>")
+ (dashboard.button :p " Find project" ":Telescope projects <CR>")
+ (dashboard.button :r " Recently used files"
+ ":Telescope oldfiles <CR>")
+ (dashboard.button :t " Find text" ":Telescope live_grep <CR>")
+ (dashboard.button :c " Configuration"
+ ":e ~/.config/nvim/init.lua <CR>")
+ (dashboard.button :q " Quit Neovim" ":qa<CR>")])
+ (set dashboard.section.header.opts.hl :AlphaHeader)
+ (set dashboard.section.buttons.opts.hl :AlphaButtons)
+ (set dashboard.opts.opts.noautocmd true)
+ (alpha.setup dashboard.opts))))
diff --git a/fnl/config/autocmd.fnl b/fnl/config/autocmd.fnl
new file mode 100644
index 0000000..628a670
--- /dev/null
+++ b/fnl/config/autocmd.fnl
@@ -0,0 +1,32 @@
+;; A customizable greeter.
+(module config.autocmd {autoload {nvim aniseed.nvim util util}})
+
+(defn autocmd [group cmds] (nvim.command (.. "augroup " group))
+ (nvim.command :autocmd!)
+ (each [_ cmd (ipairs cmds)]
+ (nvim.command (.. "autocmd " cmd))) (nvim.command "augroup end"))
+
+(def- general-settings ["FileType qf,help,man,lspinfo nnoremap <silent> <buffer> q :close<CR>"
+ "TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Search', timeout = 200})"
+ "BufWinEnter * :set formatoptions-=cro"
+ "FileType qf set nobuflisted"])
+
+(def- git ["FileType gitcommit setlocal wrap"
+ "FileType gitcommit setlocal spell"])
+
+(def- markdown ["FileType markdown setlocal wrap"
+ "FileType markdown setlocal spell"])
+
+(def- auto-resize ["VimResized * tabdo wincmd ="])
+
+(def- alpha
+ ["User AlphaReady set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2"])
+
+(def- packer ["BufWritePost plugins.lua source <afile> | PackerSync"])
+
+(autocmd :_general_settings general-settings)
+(autocmd :_git git)
+(autocmd :_markdown markdown)
+(autocmd :_auto_resize auto-resize)
+(autocmd :_alpha alpha)
+(autocmd :packer_user_config packer)
diff --git a/fnl/config/autopairs.fnl b/fnl/config/autopairs.fnl
new file mode 100644
index 0000000..2b175fa
--- /dev/null
+++ b/fnl/config/autopairs.fnl
@@ -0,0 +1,21 @@
+;; Autopairs for brackets and quote symbols.
+(module config.autopairs {autoload {util util}})
+
+(let [npairs (util.load-plugin :nvim-autopairs)]
+ (npairs.setup {:check_ts true
+ :ts_config {:lua [:string :source]
+ :javascript [:string :template_string]
+ :java false}
+ :disable_filetype [:TelescopePrompt :spectre_panel]
+ :fast_warp {:map :<M-e>
+ :chars ["{" "[" "(" "\"" "'"]
+ :pattern (string.gsub "[%'%\"%)%>%]%)%}%,]" "%s+"
+ "")
+ :check_comma true
+ :highlight :PmenuSel
+ :highlight_grey :LineNr
+ :offset 0
+ :end_key "$"
+ :keys :qwertyuiopzxcvbnmasdfghjkl
+ :highlight :PmenuSel
+ :highlight_grey :LineNr}}))
diff --git a/fnl/config/better-escape.fnl b/fnl/config/better-escape.fnl
new file mode 100644
index 0000000..93ec0a9
--- /dev/null
+++ b/fnl/config/better-escape.fnl
@@ -0,0 +1,8 @@
+;; Better escape without nasty delay
+(module config.better-escape {autoload {util util}})
+
+(let [better-escape (util.load-plugin :better_escape)]
+ (better-escape.setup {:mapping [:jk :jj]
+ :timeout vim.o.timeoutlen
+ :clear_empty_lines false
+ :keys :<Esc>}))
diff --git a/fnl/config/bufferline.fnl b/fnl/config/bufferline.fnl
new file mode 100644
index 0000000..8e6d094
--- /dev/null
+++ b/fnl/config/bufferline.fnl
@@ -0,0 +1,69 @@
+;; Topbar that displays open buffers.
+(module config.bufferline {autoload {util util}})
+
+(def- options {:numbers :none
+ :close_command "Bdelete! %d"
+ :right_mouse_command nil
+ :left_mouse_command nil
+ :middle_mouse_command nil
+ :indicator_icon ""
+ :buffer_close_icon ""
+ :modified_icon "●"
+ :close_icon ""
+ :left_trunc_marker "<"
+ :right_trunc_marker ">"
+ :max_name_length 30
+ :max_prefix_length 30
+ :tab_size 21
+ :diagnostics false
+ :diagnostics_update_in_insert false
+ :offsets [{:filetype :NvimTree :text "" :padding 1}]
+ :show_buffer_icons false
+ :show_buffer_close_icons false
+ :show_close_icon false
+ :show_tab_indicators false
+ :persist_buffer_sort true
+ :separator_style :thin
+ :enforce_regular_tabs true
+ :always_show_bufferline true})
+
+(def- default-bg-tabline {:attribute :bg :highlight :TabLine})
+
+(def- default-bg-normal {:attribute :bg :highlight :Normal})
+
+(def- default-fg-tabline {:attribute :fg :highlight :TabLine})
+
+(def- default-fg-normal {:attribute :fg :highlight :Normal})
+
+(def- highlights
+ {:fill {:guifg {:attribute :fg :highlight "#ff0000"}
+ :guibg default-bg-tabline}
+ :background {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :buffer_visible {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :close_button {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :close_button_visible {:guifg default-fg-tabline
+ :guibg default-bg-tabline}
+ :tab_selected {:guifg default-fg-normal :guibg default-bg-normal}
+ :tab {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :tab_close {:guifg {:attribute :fg :highlight :TabLineSel}
+ :guibg default-bg-normal}
+ :duplicate_selected {:guifg {:attribute :fg :highlight :TabLineSel}
+ :guibg {:attribute :bg :highlight :TabLineSel}
+ :gui :italic}
+ :duplicate_visible {:guifg default-fg-tabline
+ :guibg default-bg-tabline
+ :gui :italic}
+ :duplicate {:guifg default-fg-tabline
+ :guibg default-bg-tabline
+ :gui :italic}
+ :modified {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :modified_selected {:guifg default-fg-normal :guibg default-bg-normal}
+ :modified_visible {:guifg default-fg-tabline :guibg default-bg-tabline}
+ :separator {:guifg default-bg-tabline :guibg default-bg-tabline}
+ :separator_selected {:guifg default-bg-normal :guibg default-bg-normal}
+ :indicator_selected {:guifg {:attribute :fg
+ :highlight :LspDiagnosticsDefaultHint}
+ :guibg default-bg-normal}})
+
+(let [bufferline (util.load-plugin :bufferline)]
+ (bufferline.setup {: options : highlights}))
diff --git a/fnl/config/cmp.fnl b/fnl/config/cmp.fnl
new file mode 100644
index 0000000..50c0d85
--- /dev/null
+++ b/fnl/config/cmp.fnl
@@ -0,0 +1,42 @@
+;; Configuration for completion plugin.
+(module config.cmp {autoload {nvim aniseed.nvim util util}})
+
+(let [cmp (util.load-plugin :cmp)
+ lspkind (util.load-plugin :lspkind)
+ luasnip (util.load-plugin :luasnip)]
+ ;;((require :luasnip/loaders/from_vscode).lazy_load)
+ (lspkind.init)
+ (cmp.setup {:snippet {:expand (fn [args]
+ (luasnip.lsp_expand args.body))}
+ :mapping {:<C-k> (cmp.mapping.select_prev_item)
+ :<C-j> (cmp.mapping.select_next_item)
+ :<C-b> (cmp.mapping (cmp.mapping.scroll_docs -1)
+ [:i :c])
+ :<C-f> (cmp.mapping (cmp.mapping.scroll_docs 1) [:i :c])
+ :<C-space> (cmp.mapping (cmp.mapping.complete) [:i :c])
+ :<C-e> (cmp.mapping {:i (cmp.mapping.abort)
+ :c (cmp.mapping.close)})
+ :<CR> (cmp.mapping.confirm {:select true})
+ :<CR> (cmp.mapping.confirm {:select true})}
+ :sources [{:name :nvim_lsp}
+ {:name :nvim_lua}
+ {:name :luasnip}
+ {:name :buffer :keyword_length 4}
+ {:name :path :keyword_length 6}]
+ :formatting {:format (lspkind.cmp_format {:with_text true
+ :menu {:buffer "[Buf]"
+ :nvim_lsp "[LSP]"
+ :nvim_lua "[api]"
+ :path "[path]"
+ :luasnip "[Snip]"}})}
+ :documentation {:border ["╭"
+ "─"
+ "╮"
+ "│"
+ "╯"
+ "─"
+ "╰"
+ "│"]}
+ :confirm_opts {:behavior cmp.ConfirmBehavior.Replace
+ :select false}
+ :experimental {:ghost_text false :native_menu false}}))
diff --git a/fnl/config/colorizer.fnl b/fnl/config/colorizer.fnl
new file mode 100644
index 0000000..4d0b381
--- /dev/null
+++ b/fnl/config/colorizer.fnl
@@ -0,0 +1,5 @@
+;; Enables colorization of color codes in source files.
+(module config.colorizer {autoload {util util}})
+
+(let [colorizer (util.load-plugin :colorizer)]
+ (colorizer.setup))
diff --git a/fnl/config/colorscheme.fnl b/fnl/config/colorscheme.fnl
new file mode 100644
index 0000000..989ee75
--- /dev/null
+++ b/fnl/config/colorscheme.fnl
@@ -0,0 +1,8 @@
+;; Load neovim colorscheme.
+(module config.colorscheme {autoload {util util}})
+
+(local colorscheme :no-clown-fiesta)
+
+(let [(ok? _) (pcall (vim.cmd (.. "colorscheme " :no-clown-fiesta)))]
+ (if (not ok?)
+ (vim.notify (.. "colorscheme " colorscheme " not found!"))))
diff --git a/fnl/config/gitsigns.fnl b/fnl/config/gitsigns.fnl
new file mode 100644
index 0000000..07b9157
--- /dev/null
+++ b/fnl/config/gitsigns.fnl
@@ -0,0 +1,48 @@
+;; Add git signs to source files.
+(module config.gitsigns {autoload {util util}})
+
+(def- signs {:add {:hl :GitSignsAdd
+ :text "▎"
+ :numhl :GitSignsAddNr
+ :linehl :GitSignsAddLn}
+ :change {:hl :GitSignsChange
+ :text "▎"
+ :numhl :GitSignsChangeNr
+ :linehl :GitSignsChangeLn}
+ :delete {:hl :GitSignsDelete
+ :text "契"
+ :numhl :GitSignsDeleteNr
+ :linehl :GitSignsDeleteLn}
+ :topdelete {:hl :GitSignsDelete
+ :text "契"
+ :numhl :GitSignsDeleteNr
+ :linehl :GitSignsDeleteLn}
+ :changedelete {:hl :GitSignsChange
+ :text "▎"
+ :numhl :GitSignsChangeNr
+ :linehl :GitSignsChangeLn}})
+
+(let [gitsigns (util.load-plugin :gitsigns)]
+ (gitsigns.setup {: signs
+ :signcolumn true
+ :numhl false
+ :linehl false
+ :word_diff false
+ :watch_gitdir {:interval 1000 :follow_files true}
+ :attach_to_untracked true
+ :current_line_blame false
+ :current_line_blame_opts {:virt_text true
+ :virt_text_pos :eol
+ :delay 1000
+ :ignore_whitespace false}
+ :current_line_blame_formatter_opts {:relative_time false}
+ :sign_priority 6
+ :update_debounce 100
+ :status_formatter nil
+ :max_file_length 40000
+ :preview_config {:border :single
+ :style :minimal
+ :relative :cursor
+ :row 0
+ :col 1}
+ :yadm {:enable false}}))
diff --git a/fnl/config/hop.fnl b/fnl/config/hop.fnl
new file mode 100644
index 0000000..f623c0f
--- /dev/null
+++ b/fnl/config/hop.fnl
@@ -0,0 +1,8 @@
+;; Hopping in text.
+(module config.hop {autoload {util util nvim aniseed.nvim}})
+
+(let [hop (util.load-plugin :hop)]
+ (hop.setup {}))
+
+(nvim.set_keymap :n :s ":HopChar2<cr>" {:silent true})
+(nvim.set_keymap :n :S ":HopWord<cr>" {:silent true})
diff --git a/fnl/config/impatient.fnl b/fnl/config/impatient.fnl
new file mode 100644
index 0000000..ab37eb3
--- /dev/null
+++ b/fnl/config/impatient.fnl
@@ -0,0 +1,5 @@
+;; Speeds up loading of plugins.
+(module config.impatient {autoload {util util}})
+
+(let [impatient (util.load-plugin :impatient)]
+ (impatient.enable_profile))
diff --git a/fnl/config/init.fnl b/fnl/config/init.fnl
new file mode 100644
index 0000000..3ccff7d
--- /dev/null
+++ b/fnl/config/init.fnl
@@ -0,0 +1,23 @@
+;; Load all plugin configs.
+(module config.init {require {_ config.impatient
+ _ config.packer
+ _ config.autocmd
+ _ config.alpha
+ _ config.autopairs
+ _ config.better-escape
+ _ config.bufferline
+ _ config.cmp
+ _ config.colorizer
+ _ config.colorscheme
+ _ config.gitsigns
+ _ config.lualine
+ _ config.ncomment
+ _ config.nvim-tree
+ _ config.orgmode
+ _ config.project
+ _ config.spectre
+ _ config.telescope
+ _ config.treesitter
+ _ config.which-key
+ _ config.zen
+ _ config.lsp}})
diff --git a/fnl/config/lsp/handlers.fnl b/fnl/config/lsp/handlers.fnl
new file mode 100644
index 0000000..1e3785b
--- /dev/null
+++ b/fnl/config/lsp/handlers.fnl
@@ -0,0 +1,61 @@
+(module config.lsp.handlers {autoload {util util nvim aniseed.nvim}})
+
+(def- signs [{:name :DiagnosticSignError :text ""}
+ {:name :DiagnosticSignWarn :text ""}
+ {:name :DiagnosticSignHint :text ""}
+ {:name :DiagnosticSignInfo :text ""}])
+
+(defn- apply-signs [] (each [_ sign (ipairs signs)]
+ (vim.fn.sign_define sign.name
+ {:texthl sign.name
+ :text sign.text
+ :numhl ""})))
+
+(def- config {:virtual_text false
+ :signs {:active signs}
+ :update_in_insert true
+ :underline true
+ :severity_sort true
+ :float {:focusable false
+ :style :minimal
+ :border :rounded
+ :source :always
+ :header ""
+ :prefix ""}})
+
+(defn setup [] (apply-signs) (vim.diagnostic.config config)
+ (set vim.lsp.handlers.textDocument/hover
+ (vim.lsp.with {:border :rounded}))
+ (set vim.lsp.handlers.textDocument/signatureHelp
+ (vim.lsp.with vim.lsp.handlers.signature_help {:border :rounded})))
+
+(defn- lsp-keymaps [bufnr]
+ (let [opts {:noremap true :silent true}]
+ (nvim.buf_set_keymap bufnr :n :gD
+ "<cmd>lua vim.lsp.buf.declaration()<CR>" opts)
+ (nvim.buf_set_keymap bufnr :n :gd
+ "<cmd>lua vim.lsp.buf.definition()<CR>" opts)
+ (nvim.buf_set_keymap bufnr :n :K "<cmd>lua vim.lsp.buf.hover()<CR>"
+ opts)
+ (nvim.buf_set_keymap bufnr :n :gI
+ "<cmd>lua vim.lsp.buf.implementation()<CR>" opts)
+ (nvim.buf_set_keymap bufnr :n :gr
+ "<cmd>lua vim.lsp.buf.references()<CR>" opts)
+ (nvim.buf_set_keymap bufnr :n :gl
+ "<cmd>lua vim.diagnostic.open_float()<CR>" opts)
+ (nvim.buf_set_keymap bufnr :n :<leader>q
+ "<cmd>lua vim.diagnostic.setloclist()<CR>" opts)))
+
+(defn on-attach [client bufnr] (if (= client.name :html)
+ (set client.resolved_capabilities.document_formatting
+ false))
+ (lsp-keymaps bufnr))
+
+(defn capabilities [] (let [capabilities (vim.lsp.protocol.make_client_capabilities)]
+ (set capabilities.textDocument.completion.completionItem.snippetSupport
+ true)
+ (let [cmp-nvim-lsp (util.load-plugin :cmp_nvim_lsp)]
+ (cmp-nvim-lsp.update_capabilities capabilities))
+ capabilities))
+
+(setup)
diff --git a/fnl/config/lsp/init.fnl b/fnl/config/lsp/init.fnl
new file mode 100644
index 0000000..c4a461d
--- /dev/null
+++ b/fnl/config/lsp/init.fnl
@@ -0,0 +1,7 @@
+;; Loads the LSP module.
+(module config.lsp.init {autoload {util util}})
+
+(let [_ (util.load-plugin :lspconfig)]
+ (require :config.lsp.lsp-installer)
+ (require :config.lsp.handlers)
+ (require :config.lsp.null-ls))
diff --git a/fnl/config/lsp/lsp-installer.fnl b/fnl/config/lsp/lsp-installer.fnl
new file mode 100644
index 0000000..72bef8e
--- /dev/null
+++ b/fnl/config/lsp/lsp-installer.fnl
@@ -0,0 +1,22 @@
+;; LSP installer.
+(module config.lsp.lsp-installer {autoload {util util}})
+
+(def- opts (let [handlers (require :config.lsp.handlers)]
+ {"on_attach:" handlers.on_attach
+ :capabilities handlers.capabilities}))
+
+(defn- get-server-opts [server]
+ (when (= server.name :jsonls)
+ (let [jsonls-opts (require :config.lsp.settings.jsonls)]
+ (vim.tbl_deep_extend :force jsonls-opts opts)))
+ (when (= server.name :sumneko_lua)
+ (let [sumneko-lua (require :config.lsp.settings.sumneko-lua)]
+ (vim.tbl_deep_extend :force sumneko-lua.opts opts)))
+ (when (= server.name :pyright)
+ (let [pyright (require :config.lsp.settings.pyright)]
+ (vim.tbl_deep_extend :force pyright.opts opts))) opts)
+
+(let [lsp-installer (util.load-plugin :nvim-lsp-installer)]
+ (lsp-installer.on_server_ready (fn [server]
+ (let [opts (get-server-opts server)]
+ (server:setup opts)))))
diff --git a/fnl/config/lsp/null-ls.fnl b/fnl/config/lsp/null-ls.fnl
new file mode 100644
index 0000000..8a95ba9
--- /dev/null
+++ b/fnl/config/lsp/null-ls.fnl
@@ -0,0 +1,26 @@
+;; Adds LSP diagnostics and formatting.
+(module config.lsp.null-ls {autoload {util util}})
+
+(let [null-ls (util.load-plugin :null-ls)]
+ (let [formatting null-ls.builtins.formatting
+ diagnostics null-ls.builtins.diagnostics]
+ (null-ls.setup {:debug false
+ :sources [diagnostics.flake8
+ diagnostics.golangci_lint
+ diagnostics.jsonlint
+ diagnostics.shellcheck
+ diagnostics.yamllint
+ (formatting.black.with {:extra_args [:--fast]})
+ formatting.erlfmt
+ formatting.fourmolu
+ formatting.gofmt
+ formatting.goimports
+ formatting.nixfmt
+ (formatting.prettier.with {:extra_args [:--no-semi
+ :--single-quote
+ :--jsx-single-quote]})
+ formatting.rustfmt
+ formatting.shfmt
+ formatting.sqlformat
+ formatting.stylua
+ formatting.terraform_fmt]})))
diff --git a/fnl/config/lsp/settings/jsonls.fnl b/fnl/config/lsp/settings/jsonls.fnl
new file mode 100644
index 0000000..73e8975
--- /dev/null
+++ b/fnl/config/lsp/settings/jsonls.fnl
@@ -0,0 +1,12 @@
+;; Json schema store catalog language server.
+(module config.lsp.settings.jsonls {autoload {util util}})
+
+(let [schemastore (util.load-plugin :schemastore)]
+ (schemastore.setup {:init_options {:providerFormatter false}
+ :settings {:json {:schemas (schemastore.json.schemas)}}
+ :setup {:commands {:Format [(fn []
+ (vim.lsp.buf.range_formatting []
+ [0
+ 0]
+ [(vim.fn.line "$"
+ 0)]))]}}}))
diff --git a/fnl/config/lsp/settings/pyright.fnl b/fnl/config/lsp/settings/pyright.fnl
new file mode 100644
index 0000000..639ecff
--- /dev/null
+++ b/fnl/config/lsp/settings/pyright.fnl
@@ -0,0 +1,4 @@
+;; Config for pyright language server.
+(module config.lsp.settings.pyright)
+
+(def opts {:settings {:python {:analysis {:typeCheckingMode :off}}}})
diff --git a/fnl/config/lsp/settings/sumneko-lua.fnl b/fnl/config/lsp/settings/sumneko-lua.fnl
new file mode 100644
index 0000000..90c8807
--- /dev/null
+++ b/fnl/config/lsp/settings/sumneko-lua.fnl
@@ -0,0 +1,23 @@
+;; Config for a Lua language server.
+(module config.lsp.settings.sumneko-lua)
+
+(def- workspace
+ {:library {(vim.fn.expand :$VIMRUNTIME/lua) true
+ (vim.fn.expand :$VIMRUNTIME/lua/vim/lsp) true}})
+
+(def- diagnostics {:globals [:vim
+ :map
+ :filter
+ :range
+ :reduce
+ :head
+ :tail
+ :nth
+ :use
+ :describe
+ :it
+ :dump]})
+
+(def- runtime {:version :LuaJIT :path (vim.split package.path ";")})
+
+(def opts {:settings {:Lua {: diagnostics : workspace}}})
diff --git a/fnl/config/lualine.fnl b/fnl/config/lualine.fnl
new file mode 100644
index 0000000..5ab0920
--- /dev/null
+++ b/fnl/config/lualine.fnl
@@ -0,0 +1,48 @@
+;; Statusbar.
+(module config.lualine {autoload {util util}})
+
+(defn- hide-in-width [] (> (vim.fn.winwidth 0) 80))
+
+(def- diagnostics {1 :diagnostics
+ :sources [:nvim_diagnostic]
+ :sections [:error :warn]
+ :symbols {:error " " :warn " "}
+ :colored false
+ :update_in_insert false
+ :always_visible true})
+
+(def- diff {1 :diff
+ :colored false
+ :symbols {:added " " :modified " " :removed " "}
+ :cond hide-in-width})
+
+(def- branch {1 "b:gitsigns_head" :icon " " :cond hide-in-width})
+
+(def- filetype {1 :filetype :cond hide_in_width :color {}})
+
+(let [lualine (util.load-plugin :lualine)]
+ (lualine.setup {:options {:icons_enabled true
+ :theme :auto
+ :component_separators {:left "" :right ""}
+ :section_separators {:left "" :right ""}
+ :disabled_filetypes [:alpha
+ :dashboard
+ :NvimTree
+ :Outline]
+ :always_divide_middle true}
+ :sections {:lualine_a [:mode]
+ :lualine_b [branch :filename]
+ :lualine_c [diff]
+ :lualine_x [diagnostics filetype]
+ :lualine_y {}
+ :lualine_z [:location :progress :encoding]}
+ :inactive_sections {:lualine_a [:mode]
+ :lualine_b [:filename]
+ :lualine_c {}
+ :lualine_x {}
+ :lualine_y {}
+ :lualine_z [:location
+ :progress
+ :encoding]}
+ :tabline {}
+ :extensions {}}))
diff --git a/fnl/config/ncomment.fnl b/fnl/config/ncomment.fnl
new file mode 100644
index 0000000..217ba6d
--- /dev/null
+++ b/fnl/config/ncomment.fnl
@@ -0,0 +1,23 @@
+;; Language aware commenting.
+(module config.ncomment {autoload {util util}})
+
+(defn- get-type [ctx U] (or (and (= ctx.ctype U.ctype.line) :__default)
+ :__multiline))
+
+(defn- get-location [ctx U] (if (= ctx.ctype U.ctype.block)
+ ((require :ts_context_commentstring.utils) .get_cursor_location)
+ (or (= ctx.motion U.motion.v)
+ (= ctx.motion U.cmotion.V))
+ ((require :ts_context_commentstring.utils) .get_visual_start_location)
+ nil))
+
+(defn- pre-hook [ctx]
+ (let [U (require :Comment.utils)]
+ ((require :ts_context_commentstring.internal) .calculate_commentstring
+ {:key (get-type ctx U)
+ :location (get-location ctx
+ U)})))
+
+(let [ncomment (util.load-plugin :Comment)]
+ (ncomment.setup {:pre_hook (fn [ctx]
+ (pre-hook ctx))}))
diff --git a/fnl/config/nvim-tree.fnl b/fnl/config/nvim-tree.fnl
new file mode 100644
index 0000000..672e370
--- /dev/null
+++ b/fnl/config/nvim-tree.fnl
@@ -0,0 +1,82 @@
+;; A file explorer.
+(module config.nvim-tree {autoload {util util nvim aniseed.nvim}})
+
+(set nvim.g.nvim_tree_show_icons
+ {:default ""
+ :symlink ""
+ :git {:unstaged ""
+ :staged :S
+ :unmerged ""
+ :renamed "➜"
+ :deleted ""
+ :untracked :U
+ :ignored "◌"}
+ :folder {:default ""
+ :open ""
+ :empty ""
+ :empty_open ""
+ :symlink ""}})
+
+(let [nvim-tree (util.load-plugin :nvim-tree)
+ nvim-tree-config (util.load-plugin :nvim-tree.config)]
+ (let [tree-cb nvim-tree-config.nvim_tree_callback]
+ (nvim-tree.setup {:auto_reload_on_write true
+ :disable_netrw false
+ :hide_root_folder false
+ :hijack_cursor false
+ :hijack_netrw true
+ :hijack_unnamed_buffer_when_opening false
+ :ignore_buffer_on_setup false
+ :open_on_setup false
+ :open_on_tab false
+ :sort_by :name
+ :update_cwd true
+ :view {:width 30
+ :height 30
+ :side :left
+ :preserve_window_proportions false
+ :number false
+ :relativenumber false
+ :signcolumn :yes
+ :mappings {:custom_only false
+ :list [{:key [:l :<CR> :o]
+ :cb (tree_cb :edit)}
+ {:key :h
+ :cb (tree_cb :close_node)}
+ {:key :v :cb (tree_cb :vsplit)}]}}
+ :hijack_directories {:enable true :auto_open true}
+ :update_focused_file {:enable true
+ :update_cwd true
+ :ignore_list {}}
+ :ignore_ft_on_setup [:startify :dashboard :alpha]
+ :system_open {:cmd nil :args {}}
+ :diagnostics {:enable true
+ :show_on_dirs false
+ :icons {:hint ""
+ :info ""
+ :warning ""
+ :error ""}}
+ :filters {:dotfiles false :custom {} :exclude {}}
+ :git {:enable true :ignore true :timeout 400}
+ :actions {:change_dir {:enable true :global false}
+ :open_file {:quit_on_open false
+ :resize_window false
+ :window_picker {:enable true
+ :chars :ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
+ :exclude {:filetype [:notify
+ :packer
+ :qf
+ :diff
+ :fugitive
+ :fugitiveblame]
+ :buftype [:nofile
+ :terminal
+ :help]}}}}
+ :trash {:cmd :trash :require_confirm true}
+ :log {:enable false
+ :truncate false
+ :types {:all false
+ :config false
+ :copy_paste false
+ :git false
+ :profile false}}})))
diff --git a/fnl/config/orgmode.fnl b/fnl/config/orgmode.fnl
new file mode 100644
index 0000000..e55f2bc
--- /dev/null
+++ b/fnl/config/orgmode.fnl
@@ -0,0 +1,17 @@
+;; Orgmode for nvim.
+(module config.orgmode {autoload {util util}})
+
+(let [orgmode (util.load-plugin :orgmode)]
+ (do
+ (orgmode.setup_ts_grammar)
+ (orgmode.setup {:org_agenda_files ["~/.local/share/org/**/*"]
+ :org_default_notes_file "~/.local/share/org/refile.org"
+ :org_agenda_templates {:t {:description :Task
+ :template "* TODO %?\n %u"}
+ :m {:description :Meeting
+ :template "* MEETING %? :MEETING:
+ :LOGBOOK:
+ CLOCK: %U
+ :END:"}
+ :n {:description :Note
+ :template "* NOTE %? :NOTE:\n %u"}}})))
diff --git a/fnl/config/packer.fnl b/fnl/config/packer.fnl
new file mode 100644
index 0000000..9d6a016
--- /dev/null
+++ b/fnl/config/packer.fnl
@@ -0,0 +1,7 @@
+;; Load packer config
+(module config.packer {autoload {util util}})
+
+(let [packer (util.load-plugin :packer)]
+ (packer.init {:display {:open_fn (fn []
+ ((require :packer.util).float
+ {:border :rounded}))}}))
diff --git a/fnl/config/project.fnl b/fnl/config/project.fnl
new file mode 100644
index 0000000..7d50fee
--- /dev/null
+++ b/fnl/config/project.fnl
@@ -0,0 +1,19 @@
+;; Provides project management.
+(module config.project {autoload {util util}})
+
+(let [project (util.load-plugin :project_nvim)]
+ (project.setup {:active true
+ :on_config_done nil
+ :manual_mode false
+ :detection_methods [:patterns]
+ :patterns [:git
+ :_darcs
+ :.hg
+ :.bzr
+ :.svn
+ :Makefile
+ :package.json]
+ :show_hidden false
+ :silent_chdir true
+ :ignore_lsp {}
+ :datapath (vim.fn.stdpath :data)}))
diff --git a/fnl/config/spectre.fnl b/fnl/config/spectre.fnl
new file mode 100644
index 0000000..5529714
--- /dev/null
+++ b/fnl/config/spectre.fnl
@@ -0,0 +1,64 @@
+;; Find and replace.
+(module config.spectre {autoload {util util}})
+
+(let [spectre (util.load-plugin :spectre)]
+ (spectre.setup {:color_devicons true
+ :highlight {:ui :String
+ :search :DiffChange
+ :replace :DiffDelete}
+ :mapping {:toggle_line {:map :t
+ :cmd "<cmd>lua require('spectre').toggle_line()<CR>"
+ :desc "toggle current item"}
+ :enter_file {:map :<cr>
+ :cmd "<cmd>lua require('spectre.actions').select_entry()<CR>"
+ :desc "goto current file"}
+ :send_to_qf {:map :Q
+ :cmd "<cmd>lua require('spectre.actions').send_to_qf()<CR>"
+ :desc "send all item to quickfix"}
+ :replace_cmd {:map :c
+ :cmd "<cmd>lua require('spectre.actions').replace_cmd()<CR>"
+ :desc "input replace vim command"}
+ :show_option_menu {:map :o
+ :cmd "<cmd>lua require('spectre').show_options()<CR>"
+ :desc "show option"}
+ :run_replace {:map :R
+ :cmd "<cmd>lua require('spectre.actions').run_replace()<CR>"
+ :desc "replace all"}
+ :change_view_mode {:map :m
+ :cmd "<cmd>lua require('spectre').change_view()<CR>"
+ :desc "change result view mode"}
+ :toggle_ignore_case {:map :I
+ :cmd "<cmd>lua require('spectre').change_options('ignore-case')<CR>"
+ :desc "toggle ignore case"}
+ :toggle_ignore_hidden {:map :H
+ :cmd "<cmd>lua require('spectre').change_options('hidden')<CR>"
+ :desc "toggle search hidden"}}
+ :find_engine {:rg {:cmd :rg
+ :args [:--color=never
+ :--no-heading
+ :--with-filename
+ :--line-number
+ :--column]
+ :options {:ignore-case {:value :--ignore-case
+ :icon "[I]"
+ :desc "ignore case"}
+ :hidden {:value :--hidden
+ :desc "hidden file"
+ :icon "[H]"}}}
+ :ag {:cmd :ag
+ :args [:--vimgrep :-s]
+ :options {:ignore-case {:value :-i
+ :icon "[I]"
+ :desc "ignore case"}
+ :hidden {:value :--hidden
+ :desc "hidden file"
+ :icon "[H]"}}}}
+ :replace_engine {:sed {:cmd :sed :args nil}
+ :options {:ignore-case {:value :--ignore-case
+ :icon "[I]"
+ :desc "ignore case"}}}
+ :default {:find {:cmd :rg :options [:ignore-case]}
+ :replace {:cmd :sed}}
+ :replace_vim_cmd :cdo
+ :is_open_target_win true
+ :is_insert_mode false}))
diff --git a/fnl/config/telescope.fnl b/fnl/config/telescope.fnl
new file mode 100644
index 0000000..90a6f71
--- /dev/null
+++ b/fnl/config/telescope.fnl
@@ -0,0 +1,83 @@
+;; Telescope a highly extendable fuzzy finder over lists.
+(module config.telescope {autoload {util util}})
+
+(let [telescope (util.load-plugin :telescope)]
+ (let [actions (require :telescope.actions)]
+ (telescope.setup {:defaults {:prompt_prefix " "
+ :selection_caret " "
+ :path_display [:smart]
+ :initial_mode :insert
+ :selection_strategy :reset
+ :sorting_strategy :ascending
+ :layout_strategy :horizontal
+ :layout_config {:prompt_position :top
+ :preview_cutoff 120
+ :horizontal {:mirror false}
+ :vertical {:mirror false}}
+ :vimgrep_arguments [:rg
+ :--color=never
+ :--no-heading
+ :--with-filename
+ :--line-number
+ :--column
+ :--smart-case
+ :--hidden]
+ :mappings {:i {:<C-n> actions.cycle_history_next
+ :<C-p> actions.cycle_history_prev
+ :<C-j> actions.move_selection_next
+ :<C-k> actions.move_selection_previous
+ :<C-c> actions.close
+ :<Down> actions.move_selection_next
+ :<Up> actions.move_selection_previous
+ :<CR> actions.select_default
+ :<C-x> actions.select_horizontal
+ :<C-v> actions.select_vertical
+ :<C-t> actions.select_tab
+ :<C-u> actions.preview_scrolling_up
+ :<C-d> actions.preview_scrolling_down
+ :<PageUp> actions.results_scrolling_up
+ :<PageDown> actions.results_scrolling_down
+ :<Tab> (+ actions.toggle_selection
+ actions.move_selection_worse)
+ :<S-Tab> (+ actions.toggle_selection
+ actions.move_selection_better)
+ :<C-q> (+ actions.send_to_qflist
+ actions.open_qflist)
+ :<M-q> (+ actions.send_selected_to_qflist
+ actions.open_qflist)
+ :<C-l> actions.complete_tag
+ :<C-_> actions.which_key}
+ :n {:<esc> actions.close
+ :<CR> actions.select_default
+ :<C-x> actions.select_horizontal
+ :<C-v> actions.select_vertical
+ :<C-t> actions.select_tab
+ :<Tab> (+ actions.toggle_selection
+ actions.move_selection_worse)
+ :<S-Tab> (+ actions.toggle_selection
+ actions.move_selection_better)
+ :<C-q> (+ actions.send_to_qflist
+ actions.open_qflist)
+ :<M-q> (+ actions.send_selected_to_qflist
+ actions.open_qflist)
+ :j actions.move_selection_next
+ :k actions.move_selection_previous
+ :H actions.move_to_top
+ :M actions.move_to_middle
+ :L actions.move_to_bottom
+ :<Down> actions.move_selection_next
+ :<Up> actions.move_selection_previous
+ :gg actions.move_to_top
+ :G actions.move_to_bottom
+ :<C-u> actions.preview_scrolling_up
+ :<C-d> actions.preview_scrolling_down
+ :<PageUp> actions.results_scrolling_up
+ :<PageDown> actions.results_scrolling_down
+ :? actions.which_key}}}
+ :extensions {:fzf {:fuzzy true
+ :override_generic_sorter true
+ :override_file_sorter true
+ :case_mode :smart_case}}})
+ (telescope.load_extension :fzf)
+ (telescope.load_extension :file_browser)
+ (telescope.load_extension :projects)))
diff --git a/fnl/config/treesitter.fnl b/fnl/config/treesitter.fnl
new file mode 100644
index 0000000..73ef8a5
--- /dev/null
+++ b/fnl/config/treesitter.fnl
@@ -0,0 +1,32 @@
+;; Treesitter is a tool for building syntax trees for source files.
+;; In the neovim context it helps with better coloring.
+(module config.treesitter {autoload {util util}})
+
+(let [treesitter (util.load-plugin :nvim-treesitter.configs)]
+ (treesitter.setup {:ensure_installed [:c
+ :rust
+ :lua
+ :haskell
+ :python
+ :fennel
+ :org
+ :make
+ :go
+ :ocaml
+ :erlang
+ :vim
+ :yaml
+ :html
+ :toml
+ :dockerfile
+ :markdown
+ :latex]
+ :sync_install false
+ :ignore_install [""]
+ :autopairs {:enable true}
+ :highlight {:enable true
+ :disable [:org]
+ :additional_vim_regex_highlighting [:org]}}
+ :context_commentstring {:enable true :enable_autocmd false}
+ :indent {:enable true :disable [:yaml :python :css]}
+ :playground {:enable true}))
diff --git a/fnl/config/which-key.fnl b/fnl/config/which-key.fnl
new file mode 100644
index 0000000..020acd3
--- /dev/null
+++ b/fnl/config/which-key.fnl
@@ -0,0 +1,129 @@
+;; Which-key provides a pop-up meny for some key mappings.
+(module config.which-key {autoload {util util}})
+
+(def- setup {:plugins {:marks true
+ :registers true
+ :spelling {:enabled true :suggestions 20}
+ :presets {:operators false
+ :motions false
+ :text_objects false
+ :windows true
+ :nav true
+ :z true
+ :g true}}
+ :icons {:breadcrumb "»" :separator "" :group "+"}
+ :popup_mappings {:scroll_down :<c-d> :scroll_up :<c-u>}
+ :window {:border :rounded
+ :position :bottom
+ :margin [1 0 1 0]
+ :padding [2 2 2 2]
+ :winblend 0}
+ :layout {:height {:min 4 :max 25}
+ :width {:min 20 :max 50}
+ :spacing 3
+ :align :left}
+ :ignore_missing true
+ :hidden [:<silent> :<cmd> :<Cmd> :<CR> :call :lua "^:" "^ "]
+ :show_help true
+ :triggers :auto
+ :triggers_blacklist {:i [:j :k] :v [:j :k]}})
+
+(def- opts {:mode :n
+ :prefix :<leader>
+ :buffer nil
+ :silent true
+ :noremap true
+ :nowait true})
+
+(def- mappings
+ {:k ["<cmd>lua require('Comment.api').toggle_current_linewise()<CR>"
+ :Comment]
+ :a [:<cmd>Alpha<cr> :Alpha]
+ :b ["<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer false})<cr>"
+ :Buffers]
+ :e [:<cmd>NvimTreeToggle<cr> :Explorer]
+ :c [:<cmd>Bdelete!<CR> "Close Buffer"]
+ :n [:<cmd>nohlsearch<CR> "No Highlight"]
+ :f ["<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer false})<cr>"
+ "Find files"]
+ :F ["<cmd>Telescope file_browser<cr>" "Browse files"]
+ :t ["<cmd>Telescope live_grep theme=ivy<cr>" "Find Text"]
+ :P ["<cmd>Telescope projects<cr>" :Projects]
+ :z [:<cmd>ZenMode<cr> "Zen Mode"]
+ :v [:<cmd>vsplit<cr> "Vertical Split"]
+ :h [:<cmd>split<cr> "Horizontal Split"]
+ :p {:name :Packer
+ :c [:<cmd>PackerCompile<cr> :Compile]
+ :i [:<cmd>PackerInstall<cr> :Install]
+ :s [:<cmd>PackerSync<cr> :Sync]
+ :S [:<cmd>PackerStatus<cr> :Status]
+ :u [:<cmd>PackerUpdate<cr> :Update]}
+ :g {:name :Git
+ :g ["<cmd>lua _LAZYGIT_TOGGLE()<CR>" :Lazygit]
+ :j ["<cmd>lua require 'gitsigns'.next_hunk()<cr>" "Next Hunk"]
+ :k ["<cmd>lua require 'gitsigns'.prev_hunk()<cr>" "Prev Hunk"]
+ :l ["<cmd>lua require 'gitsigns'.blame_line()<cr>" :Blame]
+ :p ["<cmd>lua require 'gitsigns'.preview_hunk()<cr>" "Preview Hunk"]
+ :r ["<cmd>lua require 'gitsigns'.reset_hunk()<cr>" "Reset Hunk"]
+ :R ["<cmd>lua require 'gitsigns'.reset_buffer()<cr>" "Reset Buffer"]
+ :s ["<cmd>lua require 'gitsigns'.stage_hunk()<cr>" "Stage Hunk"]
+ :u ["<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>"
+ "Undo Stage Hunk"]
+ :o ["<cmd>Telescope git_status<cr>" "Open changed file"]
+ :b ["<cmd>Telescope git_branches<cr>" "Checkout branch"]
+ :c ["<cmd>Telescope git_commits<cr>" "Checkout commit"]
+ :d ["<cmd>Gitsigns diffthis HEAD<cr>" :Diff]}
+ :l {:name :LSP
+ :a ["<cmd>lua vim.lsp.buf.code_action()<cr>" "Code Action"]
+ :d ["<cmd>Telescope lsp_document_diagnostics<cr>"
+ "Document Diagnostics"]
+ :w ["<cmd>Telescope lsp_workspace_diagnostics<cr>"
+ "Workspace Diagnostics"]
+ :f ["<cmd>lua vim.lsp.buf.formatting()<cr>" :Format]
+ :i [:<cmd>LspInfo<cr> :Info]
+ :I [:<cmd>LspInstallInfo<cr> "Installer Info"]
+ :j ["<cmd>lua vim.lsp.diagnostic.goto_next()<CR>" "Next Diagnostic"]
+ :k ["<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>" "Prev Diagnostic"]
+ :l ["<cmd>lua vim.lsp.codelens.run()<cr>" "CodeLens Action"]
+ :q ["<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>" :Quickfix]
+ :r ["<cmd>lua vim.lsp.buf.rename()<cr>" :Rename]
+ :s ["<cmd>Telescope lsp_document_symbols<cr>" "Document Symbols"]
+ :S ["<cmd>Telescope lsp_dynamic_workspace_symbols<cr>"
+ "Workspace Symbols"]}
+ :s {:name :Search
+ :b ["<cmd>Telescope git_branches<cr>" "Checkout branch"]
+ :c ["<cmd>Telescope colorscheme<cr>" :Colorscheme]
+ :h ["<cmd>Telescope help_tags<cr>" "Find Help"]
+ :M ["<cmd>Telescope man_pages<cr>" "Man Pages"]
+ :r ["<cmd>Telescope oldfiles<cr>" "Open Recent File"]
+ :R ["<cmd>Telescope registers<cr>" :Registers]
+ :k ["<cmd>Telescope keymaps<cr>" :Keymaps]
+ :C ["<cmd>Telescope commands<cr>" :Commands]}
+ :o {:name :Orgmode
+ :a ["<cmd>lua require('orgmode').action('agenda.prompt')"
+ "Open agenda prompt"]
+ :c ["<cmd>lua require('orgmode').action('capture.prompt')"
+ "Open capture prompt"]}
+ :r {:name :Replace
+ :r ["<cmd>lua require('spectre').open()<cr>" :Replace]
+ :w ["<cmd>lua require('spectre').open_visual({select_word=true})<cr>"
+ "Replace Word"]
+ :f ["<cmd>lua require('spectre').open_file_search()<cr>"
+ "Replace Buffer"]}
+ :T {:name :Treesitter :p [:<cmd>TSPlaygroundToggle<cr> :Playground]}})
+
+(def- vopts {:mode :v
+ :prefix :<leader>
+ :buffer nil
+ :silent true
+ :noremap true
+ :nowait true})
+
+(def- vmappings {:k ["<ESC><CMD>lua require('Comment.api').toggle_linewise_op(vim.fn.visualmode())<CR>"
+ :Comment]})
+
+(let [which-key (util.load-plugin :which-key)]
+ (do
+ (which-key.setup setup)
+ (which-key.register mappings opts)
+ (which-key.register vmappings vopts)))
diff --git a/fnl/config/zen.fnl b/fnl/config/zen.fnl
new file mode 100644
index 0000000..7133b50
--- /dev/null
+++ b/fnl/config/zen.fnl
@@ -0,0 +1,13 @@
+;; Zen mode.
+(module config.zen {autoload {util util}})
+
+(let [zen-mode (util.load-plugin :zen-mode)]
+ (zen-mode.setup {:window {:backdrop 1
+ :height 1
+ :width 120
+ :options {:signcolumn :no
+ :number false
+ :relativenumber false}}
+ :plugins {:gitsigns {:enabled false}
+ :tmux {:enabled true}
+ :twilight {:enabled true}}}))
diff --git a/fnl/init.fnl b/fnl/init.fnl
new file mode 100644
index 0000000..4862b16
--- /dev/null
+++ b/fnl/init.fnl
@@ -0,0 +1,6 @@
+;; Install, load settings, and load plugin configs.
+(module init {autoload {util util}})
+(require :settings)
+(require :install)
+(if (> util.num-plugins 3)
+ (require :config))
diff --git a/fnl/install.fnl b/fnl/install.fnl
new file mode 100644
index 0000000..50fbe24
--- /dev/null
+++ b/fnl/install.fnl
@@ -0,0 +1,15 @@
+;; Installs plugins with packer.
+(module install {autoload {a aniseed.core
+ plugins plugins
+ packer packer
+ bootstrap bootstrap
+ util util}})
+
+(defn- install-plugins [plgs]
+ (packer.startup (fn [use]
+ (each [plugin opts (pairs plgs)]
+ (use (a.assoc opts 1 plugin))))))
+
+(install-plugins plugins.plugins)
+(if (= util.num-plugins 3)
+ (packer.sync))
diff --git a/fnl/plugins.fnl b/fnl/plugins.fnl
new file mode 100644
index 0000000..23bf9cb
--- /dev/null
+++ b/fnl/plugins.fnl
@@ -0,0 +1,64 @@
+;; List of plugins
+(module plugins)
+
+(def plugins {:wbthomason/packer.nvim {}
+ ;; Have packer manage itself
+ :lewis6991/impatient.nvim {}
+ :Olical/aniseed {}
+ :nvim-lua/popup.nvim {}
+ ;; An implementation of the Popup API from vim in Neovim
+ :nvim-lua/plenary.nvim {}
+ ;; Useful lua functions used ny lots of plugins
+ ;; Colorschemes
+ :aktersnurra/no-clown-fiesta.nvim {}
+ ;; LSP
+ :hrsh7th/nvim-cmp {}
+ ;; The completion plugin
+ :hrsh7th/cmp-buffer {}
+ ;; buffer completions
+ :hrsh7th/cmp-path {}
+ ;; path completions
+ :hrsh7th/cmp-cmdline {}
+ ;; cmdline completions
+ :saadparwaiz1/cmp_luasnip {}
+ ;; snippet completions
+ :onsails/lspkind-nvim {}
+ :hrsh7th/cmp-nvim-lsp {}
+ :neovim/nvim-lspconfig {}
+ :williamboman/nvim-lsp-installer {}
+ :tamago324/nlsp-settings.nvim {}
+ :jose-elias-alvarez/null-ls.nvim {}
+ :b0o/SchemaStore.nvim {}
+ ;; Snippets
+ :L3MON4D3/LuaSnip {}
+ :rafamadriz/friendly-snippets {}
+ ;; Telescope
+ :nvim-telescope/telescope.nvim {:requires :nvim-lua/plenary.nvim}
+ :nvim-telescope/telescope-fzf-native.nvim {:run :make}
+ :nvim-telescope/telescope-file-browser.nvim {}
+ ;; Treesitter
+ :nvim-treesitter/nvim-treesitter {:run ":TSUpdate"}
+ :JoosepAlviste/nvim-ts-context-commentstring {}
+ :nvim-treesitter/playground {}
+ ;; Miscellaneous plugins
+ :windwp/nvim-autopairs {}
+ :numToStr/Comment.nvim {}
+ :lewis6991/gitsigns.nvim {}
+ :kyazdani42/nvim-web-devicons {}
+ :kyazdani42/nvim-tree.lua {}
+ :akinsho/bufferline.nvim {}
+ :moll/vim-bbye {}
+ :nvim-lualine/lualine.nvim {:requires {1 :kyazdani42/nvim-web-devicons
+ :opt true}}
+ :ahmedkhalf/project.nvim {}
+ :goolord/alpha-nvim {}
+ :antoinemadec/FixCursorHold.nvim {}
+ ;; This is needed to fix lsp doc highlight
+ :folke/which-key.nvim {}
+ :folke/zen-mode.nvim {}
+ :windwp/nvim-spectre {}
+ :phaazon/hop.nvim {}
+ :kevinhwang91/nvim-bqf {:event :BufRead}
+ :norcalli/nvim-colorizer.lua {}
+ :max397574/better-escape.nvim {}
+ :nvim-orgmode/orgmode {}})
diff --git a/fnl/settings/init.fnl b/fnl/settings/init.fnl
new file mode 100644
index 0000000..bff9c86
--- /dev/null
+++ b/fnl/settings/init.fnl
@@ -0,0 +1,2 @@
+;; Load nvim settings
+(module settings {require {_ settings.options _ settings.keymaps}})
diff --git a/fnl/settings/keymaps.fnl b/fnl/settings/keymaps.fnl
new file mode 100644
index 0000000..52254cd
--- /dev/null
+++ b/fnl/settings/keymaps.fnl
@@ -0,0 +1,52 @@
+;; Custom keymappings.
+(module settings.keymaps {autoload {nvim aniseed.nvim}})
+
+(def- opts {:noremap true :silent true})
+(defn- map [mode lhs rhs opt] (nvim.set_keymap mode lhs rhs opt))
+
+;;Remap space as leader key
+(map "" :<Space> :<Nop> opts)
+(set nvim.g.mapleader " ")
+(set nvim.g.maplocalleader " ")
+
+;; Modes
+;; normal_mode = "n"
+;; insert_mode = "i"
+;; visual_mode = "v"
+;; visual_block_mode = "x"
+;; term_mode = "t"
+;; command_mode = "c"
+
+;; Normal ;;
+;; Better window navigation
+(map :n :<C-h> :<C-w>h opts)
+(map :n :<C-j> :<C-w>j opts)
+(map :n :<C-k> :<C-w>k opts)
+(map :n :<C-l> :<C-w>l opts)
+
+;; Resize with arrows
+(map :n :<C-Up> ":resize -2<CR>" opts)
+(map :n :<C-Down> ":resize +2<CR>" opts)
+(map :n :<C-Left> ":vertical resize -2<CR>" opts)
+(map :n :<C-Right> ":vertical resize +2<CR>" opts)
+
+;; Navigate buffers
+(map :n :<S-l> ":bnext<CR>" opts)
+(map :n :<S-h> ":bprevious<CR>" opts)
+
+;; Visual ;;
+;; Stay in indent mode
+(map :v "<" :<gv opts)
+(map :v ">" :>gv opts)
+
+;; Visual Block ;;
+;; Move text up and down
+(map :x :J ":move '>+1<CR>gv-gv" opts)
+(map :x :K ":move '<-2<CR>gv-gv" opts)
+(map :x :<A-j> ":move '>+1<CR>gv-gv" opts)
+(map :x :<A-k> ":move '<-2<CR>gv-gv" opts)
+
+;; Move text up and down
+(map :v :<A-j> ":m .+1<CR>==" opts)
+(map :v :<A-k> ":m .-2<CR>==" opts)
+(map :v :p "\"_dP" opts)
diff --git a/fnl/settings/options.fnl b/fnl/settings/options.fnl
new file mode 100644
index 0000000..f49867e
--- /dev/null
+++ b/fnl/settings/options.fnl
@@ -0,0 +1,80 @@
+;; Sets options in neovim
+(module settings.options {autoload {nvim aniseed.nvim}})
+
+(def- opts {:backup false
+ ;; creates a backup file
+ :clipboard :unnamedplus
+ ;; allows neovim to access the system clipboard
+ :cmdheight 2
+ ;; more space in the neovim command line for displaying messages
+ :completeopt {:menuone :noselect}
+ ;; mostly just for cmp
+ :conceallevel 0
+ ;; so that `` is visible in markdown files
+ :fileencoding :utf-8
+ ;; the encoding written to a file
+ :hlsearch true
+ ;; highlight all matches on previous search pattern
+ :ignorecase true
+ ;; ignore case in search patterns
+ :mouse ""
+ ;; disable the mouse to be used in neovim
+ :pumheight 10
+ ;; pop up menu height
+ :showmode false
+ ;; we don't need to see things like ;; INSERT ;; anymore
+ :showtabline 2
+ ;; always show tabs
+ :smartcase true
+ ;; smart case
+ :smartindent true
+ ;; make indenting smarter again
+ :splitbelow true
+ ;; force all horizontal splits to go below current window
+ :splitright true
+ ;; force all vertical splits to go to the right of current window
+ :swapfile false
+ ;; creates a swapfile
+ :termguicolors true
+ ;; set term gui colors (most terminals support this)
+ :timeoutlen 1000
+ ;; time to wait for a mapped sequence to complete (in milliseconds)
+ :undofile true
+ ;; enable persistent undo
+ :updatetime 300
+ ;; faster completion (4000ms default)
+ :writebackup false
+ ;; if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
+ :expandtab true
+ ;; convert tabs to spaces
+ :shiftwidth 2
+ ;; the number of spaces inserted for each indentation
+ :tabstop 2
+ ;; insert 2 spaces for a tab
+ :cursorline true
+ ;; highlight the current line
+ :number true
+ ;; set numbered lines
+ :relativenumber true
+ ;; set relative numbered lines
+ :numberwidth 4
+ ;; set number column width to 2 {default 4}
+ :signcolumn :yes
+ ;; always show the sign column, otherwise it would shift the text each time
+ :wrap false
+ ;; display lines as one long line
+ :scrolloff 8
+ ;; is one of my fav
+ :sidescrolloff 8
+ :guifont "monospace:h17"
+ ;; the font used in graphical neovim applications
+ })
+
+(defn- apply-opts [] (each [k v (pairs opts)]
+ (tset vim.opt k v)))
+
+(apply-opts)
+(vim.cmd "set whichwrap+=<,>,[,],h,l")
+(vim.cmd "set iskeyword+=-")
+(vim.cmd "set formatoptions-=cro")
+(nvim.ex.set :shortmess+=c)
diff --git a/fnl/util.fnl b/fnl/util.fnl
new file mode 100644
index 0000000..8bb3754
--- /dev/null
+++ b/fnl/util.fnl
@@ -0,0 +1,12 @@
+;; Utility functions.
+(module util {autoload {nvim aniseed.nvim}})
+
+(def- path (.. (vim.fn.stdpath :data) :/site/pack/packer/start))
+(def num-plugins (length (vim.fn.readdir path)))
+
+(defn load-plugin [name]
+ (let [(ok? val-or-err) (pcall require name)]
+ (if ok?
+ val-or-err
+ (vim.notify (.. "Could not load config: " val-or-err)
+ vim.log.levels.WARN))))
diff --git a/init.lua b/init.lua
index bdd6e6c..e166864 100644
--- a/init.lua
+++ b/init.lua
@@ -1,5 +1,31 @@
--- Loads plugins for Neovim.
+-- Bootstrap nvim with essential plugins.
+local fn = vim.fn
+local fmt = string.format
+local execute = vim.api.nvim_command
+local packer_path = fn.stdpath "data" .. "/site/pack/packer/start"
-require "settings"
-require "install"
-require "config"
+local function ensure(user, repository)
+ local ensure_path = fmt("%s/%s", packer_path, repository)
+ if fn.empty(fn.glob(ensure_path)) > 0 then
+ execute(
+ fmt(
+ "!git clone --depth 1 https://github.com/%s/%s %s",
+ user,
+ repository,
+ ensure_path
+ )
+ )
+ execute(fmt("packadd %s", repository))
+ end
+end
+
+-- Bootstrap install essential modules if not present
+ensure("wbthomason", "packer.nvim")
+ensure("Olical", "aniseed")
+ensure("lewis6991", "impatient.nvim")
+
+-- Loads plugins for Neovim with fennel.
+vim.g["aniseed#env"] = {
+ module = "init",
+ compile = true,
+}
diff --git a/lua/config/alpha.lua b/lua/config/alpha.lua
deleted file mode 100644
index fa12693..0000000
--- a/lua/config/alpha.lua
+++ /dev/null
@@ -1,44 +0,0 @@
--- A customizable greeter.
-
-local status_ok, alpha = pcall(require, "alpha")
-if not status_ok then
- return
-end
-
-local dashboard = require "alpha.themes.dashboard"
-dashboard.section.header.val = {
- [[ ##############..... ############## ]],
- [[ ##############......############## ]],
- [[ ##########..........########## ]],
- [[ ##########........########## ]],
- [[ ##########.......########## ]],
- [[ ##########.....##########.. ]],
- [[ ##########....##########..... ]],
- [[ ..##########..##########......... ]],
- [[ ....##########.#########............. ]],
- [[ ..################JJJ............ ]],
- [[ ################............. ]],
- [[ ##############.JJJ.JJJJJJJJJJ ]],
- [[ ############...JJ...JJ..JJ JJ ]],
- [[ ##########....JJ...JJ..JJ JJ ]],
- [[ ########......JJJ..JJJ JJJ JJJ ]],
- [[ ###### ......... ]],
- [[ ..... ]],
- [[ . ]],
-}
-dashboard.section.buttons.val = {
- dashboard.button("f", " Find file", ":Telescope file_browser <CR>"),
- dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
- dashboard.button("p", " Find project", ":Telescope projects <CR>"),
- dashboard.button("r", " Recently used files", ":Telescope oldfiles <CR>"),
- dashboard.button("t", " Find text", ":Telescope live_grep <CR>"),
- dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua <CR>"),
- dashboard.button("q", " Quit Neovim", ":qa<CR>"),
-}
-
-dashboard.section.header.opts.hl = "AlphaHeader"
-dashboard.section.buttons.opts.hl = "AlphaButtons"
-
-dashboard.opts.opts.noautocmd = true
--- vim.cmd([[autocmd User AlphaReady echo 'ready']])
-alpha.setup(dashboard.opts)
diff --git a/lua/config/autocommands.lua b/lua/config/autocommands.lua
deleted file mode 100644
index ef144d9..0000000
--- a/lua/config/autocommands.lua
+++ /dev/null
@@ -1,33 +0,0 @@
--- autocmd! remove all autocommands, if entered under a group it will clear that group
-
-vim.cmd [[
- augroup _general_settings
- autocmd!
- autocmd FileType qf,help,man,lspinfo nnoremap <silent> <buffer> q :close<CR>
- autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Search', timeout = 200})
- autocmd BufWinEnter * :set formatoptions-=cro
- autocmd FileType qf set nobuflisted
- augroup end
-
- augroup _git
- autocmd!
- autocmd FileType gitcommit setlocal wrap
- autocmd FileType gitcommit setlocal spell
- augroup end
-
- augroup _markdown
- autocmd!
- autocmd FileType markdown setlocal wrap
- autocmd FileType markdown setlocal spell
- augroup end
-
- augroup _auto_resize
- autocmd!
- autocmd VimResized * tabdo wincmd =
- augroup end
-
- augroup _alpha
- autocmd!
- autocmd User AlphaReady set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2
- augroup end
-]]
diff --git a/lua/config/autopairs.lua b/lua/config/autopairs.lua
deleted file mode 100644
index e218aff..0000000
--- a/lua/config/autopairs.lua
+++ /dev/null
@@ -1,34 +0,0 @@
--- Autopair for brackets and quote symbols.
-
-local status_ok, npairs = pcall(require, "nvim-autopairs")
-if not status_ok then
- return
-end
-
-npairs.setup {
- check_ts = true,
- ts_config = {
- lua = { "string", "source" },
- javascript = { "string", "template_string" },
- java = false,
- },
- disable_filetype = { "TelescopePrompt", "spectre_panel" },
- fast_wrap = {
- map = "<M-e>",
- chars = { "{", "[", "(", '"', "'" },
- pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
- offset = 0, -- Offset from pattern match
- end_key = "$",
- keys = "qwertyuiopzxcvbnmasdfghjkl",
- check_comma = true,
- highlight = "PmenuSel",
- highlight_grey = "LineNr",
- },
-}
-
-local cmp_autopairs = require "nvim-autopairs.completion.cmp"
-local cmp_status_ok, cmp = pcall(require, "cmp")
-if not cmp_status_ok then
- return
-end
-cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
diff --git a/lua/config/bufferline.lua b/lua/config/bufferline.lua
deleted file mode 100644
index 04a2e79..0000000
--- a/lua/config/bufferline.lua
+++ /dev/null
@@ -1,167 +0,0 @@
--- Adds a bar that displays open buffers.
-
-local status_ok, bufferline = pcall(require, "bufferline")
-if not status_ok then
- return
-end
-
-bufferline.setup {
- options = {
- numbers = "none", -- | "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string,
- close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
- right_mouse_command = nil, -- can be a string | function, see "Mouse actions"
- left_mouse_command = nil, -- can be a string | function, see "Mouse actions"
- middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
- -- NOTE: this plugin is designed with this icon in mind,
- -- and so changing this is NOT recommended, this is intended
- -- as an escape hatch for people who cannot bear it for whatever reason
- indicator_icon = "",
- buffer_close_icon = "",
- modified_icon = "●",
- close_icon = "",
- left_trunc_marker = "",
- right_trunc_marker = "",
- --- name_formatter can be used to change the buffer's label in the bufferline.
- --- Please note some names can/will break the
- --- bufferline so use this at your discretion knowing that it has
- --- some limitations that will *NOT* be fixed.
- -- name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
- -- -- remove extension from markdown files for example
- -- if buf.name:match('%.md') then
- -- return vim.fn.fnamemodify(buf.name, ':t:r')
- -- end
- -- end,
- max_name_length = 30,
- max_prefix_length = 30, -- prefix used when a buffer is de-duplicated
- tab_size = 21,
- diagnostics = false, -- | "nvim_lsp" | "coc",
- diagnostics_update_in_insert = false,
- -- diagnostics_indicator = function(count, level, diagnostics_dict, context)
- -- return "("..count..")"
- -- end,
- -- NOTE: this will be called a lot so don't do any heavy processing here
- -- custom_filter = function(buf_number)
- -- -- filter out filetypes you don't want to see
- -- if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
- -- return true
- -- end
- -- -- filter out by buffer name
- -- if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
- -- return true
- -- end
- -- -- filter out based on arbitrary rules
- -- -- e.g. filter out vim wiki buffer from tabline in your work repo
- -- if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
- -- return true
- -- end
- -- end,
- offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
- show_buffer_icons = false,
- show_buffer_close_icons = false,
- show_close_icon = false,
- show_tab_indicators = false,
- persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
- -- can also be a table containing 2 custom separators
- -- [focused and unfocused]. eg: { '|', '|' }
- separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' },
- enforce_regular_tabs = true,
- always_show_bufferline = true,
- -- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
- -- -- add custom logic
- -- return buffer_a.modified > buffer_b.modified
- -- end
- },
- highlights = {
- fill = {
- guifg = { attribute = "fg", highlight = "#ff0000" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- background = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
-
- -- buffer_selected = {
- -- guifg = {attribute='fg',highlight='#ff0000'},
- -- guibg = {attribute='bg',highlight='#0000ff'},
- -- gui = 'none'
- -- },
- buffer_visible = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
-
- close_button = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- close_button_visible = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- -- close_button_selected = {
- -- guifg = {attribute='fg',highlight='TabLineSel'},
- -- guibg ={attribute='bg',highlight='TabLineSel'}
- -- },
-
- tab_selected = {
- guifg = { attribute = "fg", highlight = "Normal" },
- guibg = { attribute = "bg", highlight = "Normal" },
- },
- tab = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- tab_close = {
- -- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'},
- guifg = { attribute = "fg", highlight = "TabLineSel" },
- guibg = { attribute = "bg", highlight = "Normal" },
- },
-
- duplicate_selected = {
- guifg = { attribute = "fg", highlight = "TabLineSel" },
- guibg = { attribute = "bg", highlight = "TabLineSel" },
- gui = "italic",
- },
- duplicate_visible = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- gui = "italic",
- },
- duplicate = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- gui = "italic",
- },
-
- modified = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- modified_selected = {
- guifg = { attribute = "fg", highlight = "Normal" },
- guibg = { attribute = "bg", highlight = "Normal" },
- },
- modified_visible = {
- guifg = { attribute = "fg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
-
- separator = {
- guifg = { attribute = "bg", highlight = "TabLine" },
- guibg = { attribute = "bg", highlight = "TabLine" },
- },
- separator_selected = {
- guifg = { attribute = "bg", highlight = "Normal" },
- guibg = { attribute = "bg", highlight = "Normal" },
- },
- -- separator_visible = {
- -- guifg = {attribute='bg',highlight='TabLine'},
- -- guibg = {attribute='bg',highlight='TabLine'}
- -- },
- indicator_selected = {
- guifg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" },
- guibg = { attribute = "bg", highlight = "Normal" },
- },
- },
-}
diff --git a/lua/config/cmp.lua b/lua/config/cmp.lua
deleted file mode 100644
index 6f136b2..0000000
--- a/lua/config/cmp.lua
+++ /dev/null
@@ -1,133 +0,0 @@
--- Configuration for completion plugin.
-
-local cmp_status_ok, cmp = pcall(require, "cmp")
-if not cmp_status_ok then
- return
-end
-
-local snip_status_ok, luasnip = pcall(require, "luasnip")
-if not snip_status_ok then
- return
-end
-
-require("luasnip/loaders/from_vscode").lazy_load()
-
-local check_backspace = function()
- local col = vim.fn.col "." - 1
- return col == 0 or vim.fn.getline("."):sub(col, col):match "%s"
-end
-
-local kind_icons = {
- Text = "",
- Method = "m",
- Function = "",
- Constructor = "",
- Field = "",
- Variable = "",
- Class = "",
- Interface = "",
- Module = "",
- Property = "",
- Unit = "",
- Value = "",
- Enum = "",
- Keyword = "",
- Snippet = "",
- Color = "",
- File = "",
- Reference = "",
- Folder = "",
- EnumMember = "",
- Constant = "",
- Struct = "",
- Event = "",
- Operator = "",
- TypeParameter = "",
-}
-
-cmp.setup {
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body) -- For `luasnip` users.
- end,
- },
- mapping = {
- ["<C-k>"] = cmp.mapping.select_prev_item(),
- ["<C-j>"] = cmp.mapping.select_next_item(),
- ["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
- ["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
- ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
- ["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
- ["<C-e>"] = cmp.mapping {
- i = cmp.mapping.abort(),
- c = cmp.mapping.close(),
- },
- -- Accept currently selected item. If none selected, `select` first item.
- -- Set `select` to `false` to only confirm explicitly selected items.
- ["<CR>"] = cmp.mapping.confirm { select = true },
- ["<Tab>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expandable() then
- luasnip.expand()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- elseif check_backspace() then
- fallback()
- else
- fallback()
- end
- end, {
- "i",
- "s",
- }),
- ["<S-Tab>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_prev_item()
- elseif luasnip.jumpable(-1) then
- luasnip.jump(-1)
- else
- fallback()
- end
- end, {
- "i",
- "s",
- }),
- },
- formatting = {
- fields = { "kind", "abbr", "menu" },
- format = function(entry, vim_item)
- -- Kind icons
- vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
- -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
- vim_item.menu = ({
- nvim_lsp = "[LSP]",
- nvim_lua = "[NVIM_LUA]",
- luasnip = "[Snippet]",
- buffer = "[Buffer]",
- path = "[Path]",
- })[entry.source.name]
- return vim_item
- end,
- },
- -- TODO: check out more sources
- sources = {
- { name = "nvim_lsp" },
- { name = "nvim_lua" },
- { name = "luasnip" },
- { name = "buffer" },
- { name = "path" },
- { name = "orgmode" },
- },
- confirm_opts = {
- behavior = cmp.ConfirmBehavior.Replace,
- select = false,
- },
- documentation = {
- border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
- },
- experimental = {
- ghost_text = false,
- native_menu = false,
- },
-}
diff --git a/lua/config/colorizer.lua b/lua/config/colorizer.lua
deleted file mode 100644
index a964c94..0000000
--- a/lua/config/colorizer.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- Enables colorization of color codes in source files.
-
-local status_ok, colorizer = pcall(require, "colorizer")
-if not status_ok then
- return
-end
-
-colorizer.setup({ "*" }, {
- RGB = true, -- #RGB hex codes
- RRGGBB = true, -- #RRGGBB hex codes
- RRGGBBAA = true, -- #RRGGBBAA hex codes
- rgb_fn = true, -- CSS rgb() and rgba() functions
- hsl_fn = true, -- CSS hsl() and hsla() functions
- css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
- css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn
-})
diff --git a/lua/config/colorscheme.lua b/lua/config/colorscheme.lua
deleted file mode 100644
index 8fe7c27..0000000
--- a/lua/config/colorscheme.lua
+++ /dev/null
@@ -1,9 +0,0 @@
--- Neovim colorscheme.
-
-local colorscheme = "no-clown-fiesta"
-
-local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme)
-if not status_ok then
- vim.notify("colorscheme " .. colorscheme .. " not found!")
- return
-end
diff --git a/lua/config/comment.lua b/lua/config/comment.lua
deleted file mode 100644
index 4968314..0000000
--- a/lua/config/comment.lua
+++ /dev/null
@@ -1,24 +0,0 @@
--- Language aware commenting.
-
-local status_ok, comment = pcall(require, "Comment")
-if not status_ok then
- return
-end
-
-comment.setup {
- pre_hook = function(ctx)
- local U = require "Comment.utils"
-
- local location = nil
- if ctx.ctype == U.ctype.block then
- location = require("ts_context_commentstring.utils").get_cursor_location()
- elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
- location = require("ts_context_commentstring.utils").get_visual_start_location()
- end
-
- return require("ts_context_commentstring.internal").calculate_commentstring {
- key = ctx.ctype == U.ctype.line and "__default" or "__multiline",
- location = location,
- }
- end,
-}
diff --git a/lua/config/gitsigns.lua b/lua/config/gitsigns.lua
deleted file mode 100644
index 3a5ce9d..0000000
--- a/lua/config/gitsigns.lua
+++ /dev/null
@@ -1,75 +0,0 @@
--- Add git signs to source files.
-
-local status_ok, gitsigns = pcall(require, "gitsigns")
-if not status_ok then
- return
-end
-
-gitsigns.setup {
- signs = {
- add = {
- hl = "GitSignsAdd",
- text = "▎",
- numhl = "GitSignsAddNr",
- linehl = "GitSignsAddLn",
- },
- change = {
- hl = "GitSignsChange",
- text = "▎",
- numhl = "GitSignsChangeNr",
- linehl = "GitSignsChangeLn",
- },
- delete = {
- hl = "GitSignsDelete",
- text = "契",
- numhl = "GitSignsDeleteNr",
- linehl = "GitSignsDeleteLn",
- },
- topdelete = {
- hl = "GitSignsDelete",
- text = "契",
- numhl = "GitSignsDeleteNr",
- linehl = "GitSignsDeleteLn",
- },
- changedelete = {
- hl = "GitSignsChange",
- text = "▎",
- numhl = "GitSignsChangeNr",
- linehl = "GitSignsChangeLn",
- },
- },
- signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
- numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
- linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
- word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
- watch_gitdir = {
- interval = 1000,
- follow_files = true,
- },
- attach_to_untracked = true,
- current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
- current_line_blame_opts = {
- virt_text = true,
- virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
- delay = 1000,
- ignore_whitespace = false,
- },
- current_line_blame_formatter_opts = {
- relative_time = false,
- },
- sign_priority = 6,
- update_debounce = 100,
- status_formatter = nil, -- Use default
- max_file_length = 40000,
- preview_config = {
- -- Options passed to nvim_open_win
- border = "single",
- style = "minimal",
- relative = "cursor",
- row = 0,
- col = 1,
- },
- yadm = {
- enable = false,
- },
-}
diff --git a/lua/config/hop.lua b/lua/config/hop.lua
deleted file mode 100644
index 65fd792..0000000
--- a/lua/config/hop.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local status_ok, hop = pcall(require, "hop")
-if not status_ok then
- return
-end
-
-hop.setup()
-vim.api.nvim_set_keymap("n", "s", ":HopChar2<cr>", { silent = true })
-vim.api.nvim_set_keymap("n", "S", ":HopWord<cr>", { silent = true })
diff --git a/lua/config/lsp/handlers.lua b/lua/config/lsp/handlers.lua
deleted file mode 100644
index ba38faa..0000000
--- a/lua/config/lsp/handlers.lua
+++ /dev/null
@@ -1,170 +0,0 @@
--- Handler for LSP servers.
-
-local M = {}
-
--- TODO: backfill this to template
-M.setup = function()
- local signs = {
- { name = "DiagnosticSignError", text = "" },
- { name = "DiagnosticSignWarn", text = "" },
- { name = "DiagnosticSignHint", text = "" },
- { name = "DiagnosticSignInfo", text = "" },
- }
-
- for _, sign in ipairs(signs) do
- vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
- end
-
- local config = {
- -- disable virtual text
- virtual_text = false,
- -- show signs
- signs = {
- active = signs,
- },
- update_in_insert = true,
- underline = true,
- severity_sort = true,
- float = {
- focusable = false,
- style = "minimal",
- border = "rounded",
- source = "always",
- header = "",
- prefix = "",
- },
- }
-
- vim.diagnostic.config(config)
-
- vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
- border = "rounded",
- })
-
- vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(
- vim.lsp.handlers.signature_help,
- {
- border = "rounded",
- }
- )
-end
-
-local function lsp_highlight_document(client)
- -- Set autocommands conditional on server_capabilities
- if client.resolved_capabilities.document_highlight then
- vim.api.nvim_exec(
- [[
- let ftToIgnore = ['html']
- augroup lsp_document_highlight
- autocmd! * <buffer>
- autocmd CursorHold <buffer> if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.document_highlight()
- autocmd CursorMoved <buffer> if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.clear_references()
- augroup END
- ]],
- false
- )
- end
-end
-local function lsp_keymaps(bufnr)
- local opts = { noremap = true, silent = true }
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "gD",
- "<cmd>lua vim.lsp.buf.declaration()<CR>",
- opts
- )
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "gd",
- "<cmd>lua vim.lsp.buf.definition()<CR>",
- opts
- )
- vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "gi",
- "<cmd>lua vim.lsp.buf.implementation()<CR>",
- opts
- )
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "gr",
- "<cmd>lua vim.lsp.buf.references()<CR>",
- opts
- )
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
- -- vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "gl",
- "<cmd>lua vim.diagnostic.open_float()<CR>",
- opts
- )
- vim.api.nvim_buf_set_keymap(
- bufnr,
- "n",
- "<leader>q",
- "<cmd>lua vim.diagnostic.setloclist()<CR>",
- opts
- )
- vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]
-end
-
-M.on_attach = function(client, bufnr)
- if client.name == "tsserver" then
- client.resolved_capabilities.document_formatting = false
- end
- lsp_keymaps(bufnr)
- lsp_highlight_document(client)
-end
-
-local capabilities = vim.lsp.protocol.make_client_capabilities()
-
-local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
-if not status_ok then
- return
-end
-
-M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities)
-
-function M.enable_format_on_save()
- vim.cmd [[
- augroup format_on_save
- autocmd!
- autocmd BufWritePre * lua vim.lsp.buf.formatting()
- augroup end
- ]]
- vim.notify "Enabled format on save"
-end
-
-function M.disable_format_on_save()
- M.remove_augroup "format_on_save"
- vim.notify "Disabled format on save"
-end
-
-function M.toggle_format_on_save()
- if vim.fn.exists "#format_on_save#BufWritePre" == 0 then
- M.enable_format_on_save()
- else
- M.disable_format_on_save()
- end
-end
-
-function M.remove_augroup(name)
- if vim.fn.exists("#" .. name) == 1 then
- vim.cmd("au! " .. name)
- end
-end
-
-vim.cmd [[ command! LspToggleAutoFormat execute 'lua require("user.lsp.handlers").toggle_format_on_save()' ]]
-
-return M
diff --git a/lua/config/lsp/init.lua b/lua/config/lsp/init.lua
deleted file mode 100644
index a0bb068..0000000
--- a/lua/config/lsp/init.lua
+++ /dev/null
@@ -1,10 +0,0 @@
--- Loads the LSP module.
-
-local status_ok, _ = pcall(require, "lspconfig")
-if not status_ok then
- return
-end
-
-require "config.lsp.lsp-installer"
-require("config.lsp.handlers").setup()
-require "config.lsp.null-ls"
diff --git a/lua/config/lsp/lsp-installer.lua b/lua/config/lsp/lsp-installer.lua
deleted file mode 100644
index 8bd6b98..0000000
--- a/lua/config/lsp/lsp-installer.lua
+++ /dev/null
@@ -1,34 +0,0 @@
--- LSP installer.
-
-local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
-if not status_ok then
- return
-end
-
--- Register a handler that will be called for all installed servers.
--- Alternatively, you may also register handlers on specific server instances instead (see example below).
-lsp_installer.on_server_ready(function(server)
- local opts = {
- on_attach = require("config.lsp.handlers").on_attach,
- capabilities = require("config.lsp.handlers").capabilities,
- }
-
- if server.name == "jsonls" then
- local jsonls_opts = require "config.lsp.settings.jsonls"
- opts = vim.tbl_deep_extend("force", jsonls_opts, opts)
- end
-
- if server.name == "sumneko_lua" then
- local sumneko_opts = require "config.lsp.settings.sumneko_lua"
- opts = vim.tbl_deep_extend("force", sumneko_opts, opts)
- end
-
- if server.name == "pyright" then
- local pyright_opts = require "config.lsp.settings.pyright"
- opts = vim.tbl_deep_extend("force", pyright_opts, opts)
- end
-
- -- This setup() function is exactly the same as lspconfig's setup function.
- -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
- server:setup(opts)
-end)
diff --git a/lua/config/lsp/null-ls.lua b/lua/config/lsp/null-ls.lua
deleted file mode 100644
index 662d429..0000000
--- a/lua/config/lsp/null-ls.lua
+++ /dev/null
@@ -1,38 +0,0 @@
--- Adds LSP diagnostics and formatting.
-
-local null_ls_status_ok, null_ls = pcall(require, "null-ls")
-if not null_ls_status_ok then
- return
-end
-
--- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-local formatting = null_ls.builtins.formatting
-
--- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
-local diagnostics = null_ls.builtins.diagnostics
-
-null_ls.setup {
- debug = false,
- sources = {
- diagnostics.cppcheck,
- diagnostics.flake8,
- diagnostics.golangci_lint,
- diagnostics.jsonlint,
- diagnostics.shellcheck,
- diagnostics.yamllint,
- formatting.black.with { extra_args = { "--fast" } },
- formatting.erlfmt,
- formatting.fourmolu,
- formatting.gofmt,
- formatting.goimports,
- formatting.nixfmt,
- formatting.prettier.with {
- extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" },
- },
- formatting.rustfmt,
- formatting.shfmt,
- formatting.sqlformat,
- formatting.stylua,
- formatting.terraform_fmt,
- },
-}
diff --git a/lua/config/lsp/settings/pyright.lua b/lua/config/lsp/settings/pyright.lua
deleted file mode 100644
index 780495e..0000000
--- a/lua/config/lsp/settings/pyright.lua
+++ /dev/null
@@ -1,12 +0,0 @@
--- Config for pyright language server.
-
-return {
- settings = {
-
- python = {
- analysis = {
- typeCheckingMode = "off",
- },
- },
- },
-}
diff --git a/lua/config/lsp/settings/sumneko_lua.lua b/lua/config/lsp/settings/sumneko_lua.lua
deleted file mode 100644
index ebf039f..0000000
--- a/lua/config/lsp/settings/sumneko_lua.lua
+++ /dev/null
@@ -1,18 +0,0 @@
--- Config for a Lua language server.
-
-return {
- settings = {
-
- Lua = {
- diagnostics = {
- globals = { "vim" },
- },
- workspace = {
- library = {
- [vim.fn.expand "$VIMRUNTIME/lua"] = true,
- [vim.fn.stdpath "config" .. "/lua"] = true,
- },
- },
- },
- },
-}
diff --git a/lua/config/lualine.lua b/lua/config/lualine.lua
deleted file mode 100644
index 15ca449..0000000
--- a/lua/config/lualine.lua
+++ /dev/null
@@ -1,64 +0,0 @@
--- Statusbar
-
-local status_ok, lualine = pcall(require, "lualine")
-if not status_ok then
- return
-end
-
-local hide_in_width = function()
- return vim.fn.winwidth(0) > 80
-end
-
-local diagnostics = {
- "diagnostics",
- sources = { "nvim_diagnostic" },
- sections = { "error", "warn" },
- symbols = { error = " ", warn = " " },
- colored = false,
- update_in_insert = false,
- always_visible = true,
-}
-
-local diff = {
- "diff",
- colored = false,
- symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols
- cond = hide_in_width,
-}
-
-local branch = {
- "b:gitsigns_head",
- icon = " ",
- cond = hide_in_width,
-}
-
-local filetype = { "filetype", cond = hide_in_width, color = {} }
-
-lualine.setup {
- options = {
- icons_enabled = true,
- theme = "auto",
- component_separators = { left = "", right = "" },
- section_separators = { left = "", right = "" },
- disabled_filetypes = { "alpha", "dashboard", "NvimTree", "Outline" },
- always_divide_middle = true,
- },
- sections = {
- lualine_a = { "mode" },
- lualine_b = { branch, "filename" },
- lualine_c = { diff },
- lualine_x = { diagnostics, filetype },
- lualine_y = {},
- lualine_z = { "location", "progress", "encoding" },
- },
- inactive_sections = {
- lualine_a = { "mode" },
- lualine_b = { "filename" },
- lualine_c = {},
- lualine_x = {},
- lualine_y = {},
- lualine_z = { "location", "progress", "encoding" },
- },
- tabline = {},
- extensions = {},
-}
diff --git a/lua/config/spectre.lua b/lua/config/spectre.lua
deleted file mode 100644
index 0ee0d34..0000000
--- a/lua/config/spectre.lua
+++ /dev/null
@@ -1,135 +0,0 @@
-local status_ok, spectre = pcall(require, "spectre")
-if not status_ok then
- return
-end
-spectre.setup {
-
- color_devicons = true,
- highlight = {
- ui = "String",
- search = "DiffChange",
- replace = "DiffDelete",
- },
- mapping = {
- ["toggle_line"] = {
- map = "t",
- cmd = "<cmd>lua require('spectre').toggle_line()<CR>",
- desc = "toggle current item",
- },
- ["enter_file"] = {
- map = "<cr>",
- cmd = "<cmd>lua require('spectre.actions').select_entry()<CR>",
- desc = "goto current file",
- },
- ["send_to_qf"] = {
- map = "Q",
- cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
- desc = "send all item to quickfix",
- },
- ["replace_cmd"] = {
- map = "c",
- cmd = "<cmd>lua require('spectre.actions').replace_cmd()<CR>",
- desc = "input replace vim command",
- },
- ["show_option_menu"] = {
- map = "o",
- cmd = "<cmd>lua require('spectre').show_options()<CR>",
- desc = "show option",
- },
- ["run_replace"] = {
- map = "R",
- cmd = "<cmd>lua require('spectre.actions').run_replace()<CR>",
- desc = "replace all",
- },
- ["change_view_mode"] = {
- map = "m",
- cmd = "<cmd>lua require('spectre').change_view()<CR>",
- desc = "change result view mode",
- },
- ["toggle_ignore_case"] = {
- map = "I",
- cmd = "<cmd>lua require('spectre').change_options('ignore-case')<CR>",
- desc = "toggle ignore case",
- },
- ["toggle_ignore_hidden"] = {
- map = "H",
- cmd = "<cmd>lua require('spectre').change_options('hidden')<CR>",
- desc = "toggle search hidden",
- },
- -- you can put your mapping here it only use normal mode
- },
- find_engine = {
- -- rg is map with finder_cmd
- ["rg"] = {
- cmd = "rg",
- -- default args
- args = {
- "--color=never",
- "--no-heading",
- "--with-filename",
- "--line-number",
- "--column",
- },
- options = {
- ["ignore-case"] = {
- value = "--ignore-case",
- icon = "[I]",
- desc = "ignore case",
- },
- ["hidden"] = {
- value = "--hidden",
- desc = "hidden file",
- icon = "[H]",
- },
- -- you can put any option you want here it can toggle with
- -- show_option function
- },
- },
- ["ag"] = {
- cmd = "ag",
- args = {
- "--vimgrep",
- "-s",
- },
- options = {
- ["ignore-case"] = {
- value = "-i",
- icon = "[I]",
- desc = "ignore case",
- },
- ["hidden"] = {
- value = "--hidden",
- desc = "hidden file",
- icon = "[H]",
- },
- },
- },
- },
- replace_engine = {
- ["sed"] = {
- cmd = "sed",
- args = nil,
- },
- options = {
- ["ignore-case"] = {
- value = "--ignore-case",
- icon = "[I]",
- desc = "ignore case",
- },
- },
- },
- default = {
- find = {
- --pick one of item in find_engine
- cmd = "rg",
- options = { "ignore-case" },
- },
- replace = {
- --pick one of item in replace_engine
- cmd = "sed",
- },
- },
- replace_vim_cmd = "cdo",
- is_open_target_win = true, --open file on opener window
- is_insert_mode = false, -- start open panel on is_insert_mode
-}
diff --git a/lua/config/telescope.lua b/lua/config/telescope.lua
deleted file mode 100644
index b7ef6e4..0000000
--- a/lua/config/telescope.lua
+++ /dev/null
@@ -1,120 +0,0 @@
--- Telescope a highly extendable fuzzy finder over lists.
-
-local status_ok, telescope = pcall(require, "telescope")
-if not status_ok then
- return
-end
-
-local actions = require "telescope.actions"
-
-telescope.setup {
- defaults = {
- prompt_prefix = " ",
- selection_caret = " ",
- path_display = { "smart" },
- initial_mode = "insert",
- selection_strategy = "reset",
- sorting_strategy = "ascending",
- layout_strategy = "horizontal",
- layout_config = {
- prompt_position = "top",
- preview_cutoff = 120,
- horizontal = { mirror = false },
- vertical = { mirror = false },
- },
- vimgrep_arguments = {
- "rg",
- "--color=never",
- "--no-heading",
- "--with-filename",
- "--line-number",
- "--column",
- "--smart-case",
- "--hidden",
- },
- mappings = {
- i = {
- ["<C-n>"] = actions.cycle_history_next,
- ["<C-p>"] = actions.cycle_history_prev,
-
- ["<C-j>"] = actions.move_selection_next,
- ["<C-k>"] = actions.move_selection_previous,
-
- ["<C-c>"] = actions.close,
-
- ["<Down>"] = actions.move_selection_next,
- ["<Up>"] = actions.move_selection_previous,
-
- ["<CR>"] = actions.select_default,
- ["<C-x>"] = actions.select_horizontal,
- ["<C-v>"] = actions.select_vertical,
- ["<C-t>"] = actions.select_tab,
-
- ["<C-u>"] = actions.preview_scrolling_up,
- ["<C-d>"] = actions.preview_scrolling_down,
-
- ["<PageUp>"] = actions.results_scrolling_up,
- ["<PageDown>"] = actions.results_scrolling_down,
-
- ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
- ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
- ["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
- ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
- ["<C-l>"] = actions.complete_tag,
- ["<C-_>"] = actions.which_key, -- keys from pressing <C-/>
- },
- n = {
- ["<esc>"] = actions.close,
- ["<CR>"] = actions.select_default,
- ["<C-x>"] = actions.select_horizontal,
- ["<C-v>"] = actions.select_vertical,
- ["<C-t>"] = actions.select_tab,
-
- ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
- ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
- ["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
- ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
-
- ["j"] = actions.move_selection_next,
- ["k"] = actions.move_selection_previous,
- ["H"] = actions.move_to_top,
- ["M"] = actions.move_to_middle,
- ["L"] = actions.move_to_bottom,
-
- ["<Down>"] = actions.move_selection_next,
- ["<Up>"] = actions.move_selection_previous,
- ["gg"] = actions.move_to_top,
- ["G"] = actions.move_to_bottom,
-
- ["<C-u>"] = actions.preview_scrolling_up,
- ["<C-d>"] = actions.preview_scrolling_down,
-
- ["<PageUp>"] = actions.results_scrolling_up,
- ["<PageDown>"] = actions.results_scrolling_down,
-
- ["?"] = actions.which_key,
- },
- },
- },
- pickers = {
- -- Default configuration for builtin pickers goes here:
- -- picker_name = {
- -- picker_config_key = value,
- -- ...
- -- }
- -- Now the picker_config_key will be applied every time you call this
- -- builtin picker
- },
- extensions = {
- fzf = {
- fuzzy = true, -- false will only do exact matching
- override_generic_sorter = true, -- override the generic sorter
- override_file_sorter = true, -- override the file sorter
- case_mode = "smart_case", -- or "ignore_case" or "respect_case"
- -- the default case_mode is "smart_case"
- },
- },
-}
-
-telescope.load_extension "fzf"
-telescope.load_extension "file_browser"
diff --git a/lua/config/treesitter.lua b/lua/config/treesitter.lua
deleted file mode 100644
index ec914fe..0000000
--- a/lua/config/treesitter.lua
+++ /dev/null
@@ -1,29 +0,0 @@
--- Treesitter is a tool for building syntax trees for source files.
--- In the neovim context it helps with better coloring.
-
-local status_ok, treesitter = pcall(require, "nvim-treesitter.configs")
-if not status_ok then
- return
-end
-
-treesitter.setup {
- ensure_installed = "maintained",
- sync_install = false,
- ignore_install = { "" }, -- List of parsers to ignore installing
- autopairs = {
- enable = true,
- },
- highlight = {
- enable = true, -- false will disable the whole extension
- disable = { "org" }, -- list of language that will be disabled
- additional_vim_regex_highlighting = { "org" },
- },
- context_commentstring = {
- enable = true,
- enable_autocmd = false,
- },
- indent = { enable = true, disable = { "yaml", "python", "css" } },
- playground = {
- enable = true,
- },
-}
diff --git a/lua/config/whichkey.lua b/lua/config/whichkey.lua
deleted file mode 100644
index f68cdc9..0000000
--- a/lua/config/whichkey.lua
+++ /dev/null
@@ -1,217 +0,0 @@
-local status_ok, which_key = pcall(require, "which-key")
-if not status_ok then
- return
-end
-
-local setup = {
- plugins = {
- marks = true, -- shows a list of your marks on ' and `
- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
- spelling = {
- enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
- suggestions = 20, -- how many suggestions should be shown in the list?
- },
- -- the presets plugin, adds help for a bunch of default keybindings in Neovim
- -- No actual key bindings are created
- presets = {
- operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion
- motions = false, -- adds help for motions
- text_objects = false, -- help for text objects triggered after entering an operator
- windows = true, -- default bindings on <c-w>
- nav = true, -- misc bindings to work with windows
- z = true, -- bindings for folds, spelling and others prefixed with z
- g = true, -- bindings for prefixed with g
- },
- },
- -- add operators that will trigger motion and text object completion
- -- to enable all native operators, set the preset / operators plugin above
- -- operators = { gc = "Comments" },
- key_labels = {
- -- override the label used to display some keys. It doesn't effect WK in any other way.
- -- For example:
- -- ["<space>"] = "SPC",
- -- ["<cr>"] = "RET",
- -- ["<tab>"] = "TAB",
- },
- icons = {
- breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
- separator = "", -- symbol used between a key and it's label
- group = "+", -- symbol prepended to a group
- },
- popup_mappings = {
- scroll_down = "<c-d>", -- binding to scroll down inside the popup
- scroll_up = "<c-u>", -- binding to scroll up inside the popup
- },
- window = {
- border = "rounded", -- none, single, double, shadow
- position = "bottom", -- bottom, top
- margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
- padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
- winblend = 0,
- },
- layout = {
- height = { min = 4, max = 25 }, -- min and max height of the columns
- width = { min = 20, max = 50 }, -- min and max width of the columns
- spacing = 3, -- spacing between columns
- align = "left", -- align columns left, center or right
- },
- ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label
- hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
- show_help = true, -- show help message on the command line when the popup is visible
- triggers = "auto", -- automatically setup triggers
- -- triggers = {"<leader>"} -- or specify a list manually
- triggers_blacklist = {
- -- list of mode / prefixes that should never be hooked by WhichKey
- -- this is mostly relevant for key maps that start with a native binding
- -- most people should not need to change this
- i = { "j", "k" },
- v = { "j", "k" },
- },
-}
-
-local opts = {
- mode = "n", -- NORMAL mode
- prefix = "<leader>",
- buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
- silent = true, -- use `silent` when creating keymaps
- noremap = true, -- use `noremap` when creating keymaps
- nowait = true, -- use `nowait` when creating keymaps
-}
-
-local mappings = {
- ["k"] = { '<cmd>lua require("Comment.api").toggle_current_linewise()<CR>', "Comment" },
- ["a"] = { "<cmd>Alpha<cr>", "Alpha" },
- ["b"] = {
- "<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})<cr>",
- "Buffers",
- },
- ["e"] = { "<cmd>NvimTreeToggle<cr>", "Explorer" },
- ["c"] = { "<cmd>Bdelete!<CR>", "Close Buffer" },
- ["n"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
- ["f"] = {
- "<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})<cr>",
- "Find files",
- },
- ["F"] = { "<cmd>Telescope file_browser<cr>", "Browse files" },
- ["t"] = { "<cmd>Telescope live_grep theme=ivy<cr>", "Find Text" },
- ["P"] = { "<cmd>Telescope projects<cr>", "Projects" },
- ["z"] = { "<cmd>ZenMode<cr>", "Zen Mode" },
- ["v"] = { "<cmd>vsplit<cr>", "Vertical Split" },
- ["h"] = { "<cmd>split<cr>", "Horizontal Split" },
-
- p = {
- name = "Packer",
- c = { "<cmd>PackerCompile<cr>", "Compile" },
- i = { "<cmd>PackerInstall<cr>", "Install" },
- s = { "<cmd>PackerSync<cr>", "Sync" },
- S = { "<cmd>PackerStatus<cr>", "Status" },
- u = { "<cmd>PackerUpdate<cr>", "Update" },
- },
-
- g = {
- name = "Git",
- g = { "<cmd>lua _LAZYGIT_TOGGLE()<CR>", "Lazygit" },
- j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" },
- k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" },
- l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
- p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
- r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
- R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
- s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
- u = {
- "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
- "Undo Stage Hunk",
- },
- o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
- b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
- c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
- d = {
- "<cmd>Gitsigns diffthis HEAD<cr>",
- "Diff",
- },
- },
-
- l = {
- name = "LSP",
- a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
- d = {
- "<cmd>Telescope lsp_document_diagnostics<cr>",
- "Document Diagnostics",
- },
- w = {
- "<cmd>Telescope lsp_workspace_diagnostics<cr>",
- "Workspace Diagnostics",
- },
- f = { "<cmd>lua vim.lsp.buf.formatting()<cr>", "Format" },
- i = { "<cmd>LspInfo<cr>", "Info" },
- I = { "<cmd>LspInstallInfo<cr>", "Installer Info" },
- j = {
- "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>",
- "Next Diagnostic",
- },
- k = {
- "<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>",
- "Prev Diagnostic",
- },
- l = { "<cmd>lua vim.lsp.codelens.run()<cr>", "CodeLens Action" },
- q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>", "Quickfix" },
- r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
- s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
- S = {
- "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
- "Workspace Symbols",
- },
- },
-
- s = {
- name = "Search",
- b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
- c = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" },
- h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
- M = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
- r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
- R = { "<cmd>Telescope registers<cr>", "Registers" },
- k = { "<cmd>Telescope keymaps<cr>", "Keymaps" },
- C = { "<cmd>Telescope commands<cr>", "Commands" },
- },
-
- o = {
- name = "Orgmode",
- a = {"<cmd>lua require('orgmode').action('agenda.prompt')", "Open agenda prompt"},
- c = {"<cmd>lua require('orgmode').action('capture.prompt')", "Open capture prompt"},
- },
-
- r = {
- name = "Replace",
- r = { "<cmd>lua require('spectre').open()<cr>", "Replace" },
- w = {
- "<cmd>lua require('spectre').open_visual({select_word=true})<cr>",
- "Replace Word",
- },
- f = { "<cmd>lua require('spectre').open_file_search()<cr>", "Replace Buffer" },
- },
-
- T = {
- name = "Treesitter",
- p = { "<cmd>TSPlaygroundToggle<cr>", "Playground" },
- },
-}
-
-local vopts = {
- mode = "v", -- VISUAL mode
- prefix = "<leader>",
- buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
- silent = true, -- use `silent` when creating keymaps
- noremap = true, -- use `noremap` when creating keymaps
- nowait = true, -- use `nowait` when creating keymaps
-}
-local vmappings = {
- ["k"] = {
- '<ESC><CMD>lua require("Comment.api").toggle_linewise_op(vim.fn.visualmode())<CR>',
- "Comment",
- },
-}
-
-which_key.setup(setup)
-which_key.register(mappings, opts)
-which_key.register(vmappings, vopts)
diff --git a/lua/config/zen.lua b/lua/config/zen.lua
deleted file mode 100644
index b54442d..0000000
--- a/lua/config/zen.lua
+++ /dev/null
@@ -1,28 +0,0 @@
--- Zen mode
-
-local status_ok, zen_mode = pcall(require, "zen-mode")
-if not status_ok then
- return
-end
-
-zen_mode.setup {
- window = {
- backdrop = 1,
- height = 1, -- height of the Zen window
- width = 120,
- options = {
- signcolumn = "no", -- disable signcolumn
- number = false, -- disable number column
- relativenumber = false, -- disable relative numbers
- -- cursorline = false, -- disable cursorline
- -- cursorcolumn = false, -- disable cursor column
- -- foldcolumn = "0", -- disable fold column
- -- list = false, -- disable whitespace characters
- },
- },
- plugins = {
- gitsigns = { enabled = false }, -- disables git signs
- tmux = { enabled = true },
- twilight = { enabled = true },
- },
-}
diff --git a/lua/settings/init.lua b/lua/settings/init.lua
deleted file mode 100644
index dfcaf8f..0000000
--- a/lua/settings/init.lua
+++ /dev/null
@@ -1,4 +0,0 @@
--- Load nvim settings
-
-require "settings.options"
-require "settings.keymaps"
diff --git a/lua/settings/keymaps.lua b/lua/settings/keymaps.lua
deleted file mode 100644
index 8d8ed73..0000000
--- a/lua/settings/keymaps.lua
+++ /dev/null
@@ -1,59 +0,0 @@
--- Custom keymappings.
-
-local opts = { noremap = true, silent = true }
-
--- Shorten function name
-local keymap = vim.api.nvim_set_keymap
-
---Remap space as leader key
-keymap("", "<Space>", "<Nop>", opts)
-vim.g.mapleader = " "
-vim.g.maplocalleader = " "
-
--- Modes
--- normal_mode = "n",
--- insert_mode = "i",
--- visual_mode = "v",
--- visual_block_mode = "x",
--- term_mode = "t",
--- command_mode = "c",
-
--- Normal --
--- Better window navigation
-keymap("n", "<C-h>", "<C-w>h", opts)
-keymap("n", "<C-j>", "<C-w>j", opts)
-keymap("n", "<C-k>", "<C-w>k", opts)
-keymap("n", "<C-l>", "<C-w>l", opts)
-
-keymap("n", "<leader>e", ":Lex 30<cr>", opts)
-
--- Resize with arrows
-keymap("n", "<C-Up>", ":resize +2<CR>", opts)
-keymap("n", "<C-Down>", ":resize -2<CR>", opts)
-keymap("n", "<C-Left>", ":vertical resize -2<CR>", opts)
-keymap("n", "<C-Right>", ":vertical resize +2<CR>", opts)
-
--- Navigate buffers
-keymap("n", "<S-l>", ":bnext<CR>", opts)
-keymap("n", "<S-h>", ":bprevious<CR>", opts)
-
--- Insert --
--- Press jk fast to enter
-keymap("i", "jk", "<ESC>", opts)
-
--- Visual --
--- Stay in indent mode
-keymap("v", "<", "<gv", opts)
-keymap("v", ">", ">gv", opts)
-
--- Move text up and down
-keymap("v", "<A-j>", ":m .+1<CR>==", opts)
-keymap("v", "<A-k>", ":m .-2<CR>==", opts)
-keymap("v", "p", '"_dP', opts)
-
--- Visual Block --
--- Move text up and down
-keymap("x", "J", ":move '>+1<CR>gv-gv", opts)
-keymap("x", "K", ":move '<-2<CR>gv-gv", opts)
-keymap("x", "<A-j>", ":move '>+1<CR>gv-gv", opts)
-keymap("x", "<A-k>", ":move '<-2<CR>gv-gv", opts)
diff --git a/lua/settings/options.lua b/lua/settings/options.lua
deleted file mode 100644
index 65a4143..0000000
--- a/lua/settings/options.lua
+++ /dev/null
@@ -1,48 +0,0 @@
--- Sets options in neovim
-
-local options = {
- backup = false, -- creates a backup file
- clipboard = "unnamedplus", -- allows neovim to access the system clipboard
- cmdheight = 2, -- more space in the neovim command line for displaying messages
- completeopt = { "menuone", "noselect" }, -- mostly just for cmp
- conceallevel = 0, -- so that `` is visible in markdown files
- fileencoding = "utf-8", -- the encoding written to a file
- hlsearch = true, -- highlight all matches on previous search pattern
- ignorecase = true, -- ignore case in search patterns
- mouse = "", -- disable the mouse to be used in neovim
- pumheight = 10, -- pop up menu height
- showmode = false, -- we don't need to see things like -- INSERT -- anymore
- showtabline = 2, -- always show tabs
- smartcase = true, -- smart case
- smartindent = true, -- make indenting smarter again
- splitbelow = true, -- force all horizontal splits to go below current window
- splitright = true, -- force all vertical splits to go to the right of current window
- swapfile = false, -- creates a swapfile
- termguicolors = true, -- set term gui colors (most terminals support this)
- timeoutlen = 1000, -- time to wait for a mapped sequence to complete (in milliseconds)
- undofile = true, -- enable persistent undo
- updatetime = 300, -- faster completion (4000ms default)
- writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
- expandtab = true, -- convert tabs to spaces
- shiftwidth = 2, -- the number of spaces inserted for each indentation
- tabstop = 2, -- insert 2 spaces for a tab
- cursorline = true, -- highlight the current line
- number = true, -- set numbered lines
- relativenumber = true, -- set relative numbered lines
- numberwidth = 4, -- set number column width to 2 {default 4}
- signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
- wrap = false, -- display lines as one long line
- scrolloff = 8, -- is one of my fav
- sidescrolloff = 8,
- guifont = "monospace:h17", -- the font used in graphical neovim applications
-}
-
-vim.opt.shortmess:append "c"
-
-for k, v in pairs(options) do
- vim.opt[k] = v
-end
-
-vim.cmd "set whichwrap+=<,>,[,],h,l"
-vim.cmd [[set iskeyword+=-]]
-vim.cmd [[set formatoptions-=cro]]