about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig17
-rw-r--r--fnl/nvrc/colors.fnl42
-rw-r--r--fnl/nvrc/keymaps.fnl30
-rw-r--r--fnl/nvrc/options.fnl36
-rw-r--r--fnl/nvrc/pack.fnl43
-rw-r--r--fnl/nvrc/packs/diffview.fnl7
-rw-r--r--fnl/nvrc/packs/filetype.fnl3
-rw-r--r--fnl/nvrc/packs/harpoon.fnl3
-rw-r--r--fnl/nvrc/packs/mergetool.fnl7
-rw-r--r--fnl/nvrc/packs/nvimtree.fnl44
-rw-r--r--fnl/nvrc/packs/treesitter.fnl22
-rw-r--r--init.lua2
12 files changed, 137 insertions, 119 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..a4e6da6
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,17 @@
+root = true
+
+[*.fnl]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+
+[*.lua]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+
+[*.md]
+indent_style = space
+indent_size = 4
+max_line_length = 80
+trim_trailing_whitespace = false
diff --git a/fnl/nvrc/colors.fnl b/fnl/nvrc/colors.fnl
index 854b79f..7750814 100644
--- a/fnl/nvrc/colors.fnl
+++ b/fnl/nvrc/colors.fnl
@@ -5,8 +5,10 @@
                :black "#181818"
                :black2 "#101010"
                :bblack "#252525"
-               :grey "#888888"
+               :dgrey "#333333"
+               :mgrey "#444444"
                :grey2 "#666666"
+               :grey "#888888"
                :bgrey "#999999"
                :red "#cf6a4c"
                :orange "#fabb6e"
@@ -16,12 +18,12 @@
                :skyblue "#8fbfdc"
                :blue "#8197bf"
                :violet "#c6b6ee"
-               :magenta "#f0a0c0"
-               :sign "#333333"})
+               :magenta "#f0a0c0"})
 
-(fn colors.apply []
+
+(lambda colors.apply [colorscheme]
   (local {: highlight} (require :nvrc.macro.color))
-  (vim.cmd "colorscheme jellybeans")
+  (vim.cmd (.. "colorscheme " colorscheme))
 
   ; Buffer
   (highlight :EndOfBuffer {:fg (. colors :bg)})
@@ -31,7 +33,7 @@
   ; Pmenu
   (highlight :Pmenu {:bg (. colors :bblack)})
   (highlight :PmenuSbar {:bg (. colors :bblack)})
-  (highlight :PmenuSel {:fg (. colors :orange) :bg (. colors :sign)})
+  (highlight :PmenuSel {:fg (. colors :orange) :bg (. colors :dgrey)})
   (highlight :PmenuThumb {:bg (. colors :skyblue)})
   (highlight :CmpItemAbbr {:fg (. colors :fg)})
   (highlight :CmpItemAbbrMatch {:fg (. colors :fg)})
@@ -41,16 +43,19 @@
   ; Misc
   (highlight :StatusLine {:bg (. colors :black)})
   (highlight :StatusLineNC {:fg (. colors :grey) :bg (. colors :black) :underline true})
+  (highlight :TabLine {:fg (. colors :fg) :bg (. colors :mgrey)})
+  (highlight :TabLineFill {:fg (. colors :fg) :bg (. colors :bg)})
+  (highlight :TabLineSel {:fg (. colors :fg) :bg (. colors :grey2)})
   (highlight :LineNr {:fg (. colors :grey)})
   (highlight :NvimInternalError {:fg (. colors :red)})
   (highlight :VertSplit {:fg (. colors :grey2)})
 
-  ; Gitsigns
-  (highlight :DiffAdd {:fg (. colors :green) :bg (. colors :sign)})
-  (highlight :DiffChange {:fg (. colors :yellow) :bg (. colors :sign)})
-  (highlight :DiffChangeDelete {:fg (. colors :red) :bg (. colors :sign)})
-  (highlight :DiffModified {:fg (. colors :red) :bg (. colors :sign)})
-  (highlight :DiffDelete {:fg (. colors :red) :bg (. colors :sign)})
+  ; Gitdgreys
+  (highlight :DiffAdd {:fg (. colors :green) :bg (. colors :dgrey)})
+  (highlight :DiffChange {:fg (. colors :yellow) :bg (. colors :dgrey)})
+  (highlight :DiffChangeDelete {:fg (. colors :red) :bg (. colors :dgrey)})
+  (highlight :DiffModified {:fg (. colors :red) :bg (. colors :dgrey)})
+  (highlight :DiffDelete {:fg (. colors :red) :bg (. colors :dgrey)})
 
   ; Nvimtree
   (highlight :NvimTreeNormal {:bg (. colors :black)})
@@ -65,17 +70,6 @@
   (highlight :NvimTreeFolderIcon {:fg (. colors :skyblue)})
   (highlight :NvimTreeFolderName {:fg (. colors :skyblue)})
   (highlight :NvimTreeOpenedFolderName {:fg (. colors :magenta)})
-  (highlight :NvimTreeEndOfBuffer {:fg (. colors :black2)})
-
-  ; Telescope
-  (highlight :TelescopeBorder {:fg (. colors :fg)})
-  (highlight :TelescopePromptBorder {:fg (. colors :fg)})
-  (highlight :TelescopePromptNormal {:fg (. colors :fg)})
-  (highlight :TelescopePromptPrefix {:fg (. colors :red)})
-  (highlight :TelescopeNormal {:bg :NONE})
-  (highlight :TelescopePreviewTitle {:fg (. colors :nvimbg) :bg (. colors :green)})
-  (highlight :TelescopePromptTitle {:fg (. colors :nvimbg) :bg (. colors :red)})
-  (highlight :TelescopeResultsTitle {:fg (. colors :nvimbg) :bg (. colors :skyblue)})
-  (highlight :TelescopeSelection {:link :Search}))
+  (highlight :NvimTreeEndOfBuffer {:fg (. colors :black2)}))
 
 colors
diff --git a/fnl/nvrc/keymaps.fnl b/fnl/nvrc/keymaps.fnl
index 790d21b..c3bf6c0 100644
--- a/fnl/nvrc/keymaps.fnl
+++ b/fnl/nvrc/keymaps.fnl
@@ -4,8 +4,8 @@
 (map! [n] :<space> "" "")
 (setv! mapleader " ")
 
-(map! [n :silent] :<leader>fe ":NvimTreeToggle <cr>")
-(map! [n :silent] :<leader>ft ":NvimTreeFocus <cr>")
+(map! [n :silent] :<leader>e ":bprev <cr>")
+(map! [n :silent] :<leader>r ":bnext <cr>")
 
 (map! [n :silent] :<leader>/
       ":lua require('Comment.api').toggle_current_linewise() <cr>")
@@ -16,27 +16,37 @@
 (map! [n :silent] :<leader>fc ":FzfLua grep <cr>")
 (map! [n :silent] :<leader>fs ":FzfLua live_grep <cr>")
 (map! [n :silent] :<leader>fb ":FzfLua buffers <cr>")
-(map! [n :silent] :<leader>gc ":FzfLua git_commits <cr>")
-(map! [n :silent] :<leader>gs ":FzfLua git_status <cr>")
+(map! [n :silent] :<leader>fg ":FzfLua git_commits <cr>")
+(map! [n :silent] :<leader>fs ":FzfLua git_status <cr>")
 
 (map! [n] :f :<plug>Lightspeed_f)
 (map! [n] :F :<plug>Lightspeed_F)
 (map! [n] :t :<plug>Lightspeed_t)
 (map! [n] :T :<plug>Lightspeed_T)
 
-(map! [n :silent] :<leader>rm ":TZMinimalist <cr>")
-(map! [n :silent] :<leader>rf ":TZFocus <cr>")
-(map! [n :silent] :<leader>ra ":TZAtaraxis <cr>")
+(map! [n :silent] :<leader>mm ":TZMinimalist <cr>")
+(map! [n :silent] :<leader>mf ":TZFocus <cr>")
+(map! [n :silent] :<leader>ma ":TZAtaraxis <cr>")
+
+(map! [n :silent] :<leader>h ":lua require('harpoon.ui').nav_file(1) <cr>")
+(map! [n :silent] :<leader>j ":lua require('harpoon.ui').nav_file(2) <cr>")
+(map! [n :silent] :<leader>k ":lua require('harpoon.ui').nav_file(3) <cr>")
+(map! [n :silent] :<leader>l ":lua require('harpoon.ui').nav_file(4) <cr>")
+(map! [n :silent] "<leader>;" ":lua require('harpoon.term').gotoTerminal(1) <cr>")
+(map! [n :silent] "<leader>'" ":lua require('harpoon.term').gotoTerminal(2) <cr>")
+(map! [n :silent] :<leader>g ":lua require('harpoon.ui').toggle_quick_menu() <cr>")
+(map! [n :silent] :<leader>u ":lua require('harpoon.mark').add_file() <cr>")
 
 (map! [t] :jk "<C-\\><C-n>")
 (map! [t :silent] :JK "<C-\\><C-n> :lua require ('nvrc.utils').del_buf() <cr>")
 ; FIXME This opens on top of existing vertical/horizontal term
+; TODO come up with a better category key
 (map! [n :silent] :<leader>th ":execute 15 .. 'new +terminal' | let b:term_type = 'hori' <cr>")
-(map! [n :silent] :<leader>tv ":execute 'vnew +terminal' | let b:term_type = 'vert' <cr>")
-(map! [n :silent] :<leader>tn ":execute 'terminal' | let b:term_type = 'wind' <cr>")
+(map! [n :silent] :<leader>tj ":execute 'vnew +terminal' | let b:term_type = 'vert' <cr>")
+(map! [n :silent] :<leader>tk ":execute 'terminal' | let b:term_type = 'wind' <cr>")
 
 (map! [n :silent] :<leader>q ":lua require('nvrc.utils').del_buf() <cr>")
 (map! [n :silent] :<leader>ya ":%y+ <cr>")
 (map! [n :silent] :<leader>bn ":enew <cr>")
 (map! [n :silent] :<leader>wn ":tabnew <cr>")
-(map! [n :silent] :<leader>lt ":set nu! <cr>")
+(map! [n :silent] :<leader>tl ":set nu! <cr>")
diff --git a/fnl/nvrc/options.fnl b/fnl/nvrc/options.fnl
index b9a59bc..abd0a7b 100644
--- a/fnl/nvrc/options.fnl
+++ b/fnl/nvrc/options.fnl
@@ -7,8 +7,8 @@
 (set! cul)
 (set! cmdheight 1)
 (set! number)
-(set! numberwidth 2)
 (set! shortmess+ :sI)
+(set! signcolumn :yes)
 (set! splitbelow)
 (set! splitright)
 (set! termguicolors)
@@ -32,20 +32,20 @@
 (set! whichwrap+ "<>[]hl")
 
 (disable-builtins! [:2html_plugin
-                   :getscript
-                   :getscriptPlugin
-                   :gzip
-                   :logipat
-                   :netrw
-                   :netrwPlugin
-                   :netrwSettings
-                   :netrwFileHandlers
-                   :matchit
-                   :tar
-                   :tarPlugin
-                   :rrhelper
-                   :spellfile_plugin
-                   :vimball
-                   :vimballPlugin
-                   :zip
-                   :zipPlugin])
+                    :getscript
+                    :getscriptPlugin
+                    :gzip
+                    :logipat
+                    :netrw
+                    :netrwPlugin
+                    :netrwSettings
+                    :netrwFileHandlers
+                    :matchit
+                    :tar
+                    :tarPlugin
+                    :rrhelper
+                    :spellfile_plugin
+                    :vimball
+                    :vimballPlugin
+                    :zip
+                    :zipPlugin])
diff --git a/fnl/nvrc/pack.fnl b/fnl/nvrc/pack.fnl
index d30f27e..71901ac 100644
--- a/fnl/nvrc/pack.fnl
+++ b/fnl/nvrc/pack.fnl
@@ -4,29 +4,42 @@
 (pack! :rktjmp/hotpot.nvim)
 (pack! :lewis6991/impatient.nvim)
 (pack! :nvim-lua/plenary.nvim {:module :plenary})
+(pack! :nathom/filetype.nvim {:req :filetype})
 
-(pack! :nanotech/jellybeans.vim {:event :VimEnter :config "require('nvrc.colors').apply()"})
+(pack! :nanotech/jellybeans.vim {:config "require('nvrc.colors').apply('jellybeans')"})
 (pack! :feline-nvim/feline.nvim {:req :feline})
-(pack! :lukas-reineke/indent-blankline.nvim {:after :feline.nvim :req :blankline})
-(pack! :NvChad/nvim-colorizer.lua {:init :colorizer :event :BufRead})
-(pack! :nvim-treesitter/nvim-treesitter {:req :treesitter :defer :nvim-treesitter :run ":TSUpdate"})
-(pack! :lewis6991/gitsigns.nvim {:req :gitsigns :event :BufRead})
+(pack! :lukas-reineke/indent-blankline.nvim {:req :blankline})
+(pack! :NvChad/nvim-colorizer.lua {:init :colorizer :cmd :ColorizerToggle})
+(pack! :nvim-treesitter/nvim-treesitter {:req :treesitter :run ":TSUpdate"})
+(pack! :p00f/nvim-ts-rainbow)
+(pack! :nvim-treesitter/nvim-treesitter-refactor)
+(pack! :nvim-treesitter/nvim-treesitter-textobjects)
+(pack! :JoosepAlviste/nvim-ts-context-commentstring)
+(pack! :lewis6991/gitsigns.nvim {:req :gitsigns})
+(pack! :sindrets/diffview.nvim {:req :diffview :cmd [:DiffviewOpen :DiffviewFileHistory] :module_pattern [:diffview :diffview.*]})
 (pack! :Pocco81/TrueZen.nvim {:cmd [:TZMinimalist :TZFocus :TZAtaraxis]})
 (pack! :stefandtw/quickfix-reflector.vim {:ft :qf})
 
-(pack! :neovim/nvim-lspconfig {:req :lspconfig :module :lspconfig :setup (fn []
-                                                                            ((. (require :nvrc.utils) :defer_unpack) :nvim-lspconfig 100)
-                                                                            (vim.defer_fn #(vim.cmd "if &ft == 'packer' | echo '' | else | silent! e %") 150))})
-(pack! :ray-x/lsp_signature.nvim {:req :lsp_signature :after :nvim-lspconfig})
-(pack! :hrsh7th/nvim-cmp {:req :cmp :event :InsertEnter})
-(pack! :hrsh7th/cmp-nvim-lsp {:after :nvim-cmp})
+(pack! :neovim/nvim-lspconfig {:req :lspconfig})
+(pack! :ray-x/lsp_signature.nvim {:req :lsp_signature})
+(pack! :hrsh7th/nvim-cmp {:req :cmp})
+(pack! :hrsh7th/cmp-nvim-lsp)
 
-(pack! :luukvbaal/stabilize.nvim {:after :jellybeans.vim :init :stabilize})
+(pack! :luukvbaal/stabilize.nvim {:init :stabilize})
+(pack! :antoinemadec/FixCursorHold.nvim)
 (pack! :numToStr/Comment.nvim {:module :Comment :init :Comment})
-(pack! :kyazdani42/nvim-tree.lua {:req :nvimtree :defer :nvim-tree.lua})
-(pack! :ggandor/lightspeed.nvim {:keys [:s :S :x :X :f :F]})
+(pack! :lewis6991/spaceless.nvim {:init :spaceless})
+(pack! :tpope/vim-surround)
+(pack! :junegunn/vim-easy-align {:keys "<Plug>EasyAlign"})
+(pack! :monaqa/dial.nvim {:keys [:<C-a> :<C-x>]})
+(pack! :ggandor/lightspeed.nvim)
+(pack! :nacro90/numb.nvim {:init :numb})
 (pack! :ibhagwan/fzf-lua {:req :fzf :module :fzf-lua :cmd :FzfLua})
+(pack! :andymass/vim-matchup)
+(pack! :ThePrimeagen/harpoon {:req :harpoon})
+(pack! :gpanders/editorconfig.nvim)
 
-(pack! :bakpakin/fennel.vim {:ft :fennel})
+(pack! :simrat39/rust-tools.nvim {:init :rust-tools :ft :rust})
+(pack! :eraserhd/parinfer-rust {:ft [:fennel :clojure :query :lisp] :run "cargo build --release"})
 
 (unpack!)
diff --git a/fnl/nvrc/packs/diffview.fnl b/fnl/nvrc/packs/diffview.fnl
new file mode 100644
index 0000000..a32dea5
--- /dev/null
+++ b/fnl/nvrc/packs/diffview.fnl
@@ -0,0 +1,7 @@
+(local {: setup} (require :diffview))
+
+(setup {:enhanced_diff_hl true
+        :use_icons false
+        :key_bindings {:file_panel {:q "<cmd>DiffviewClose<cr>"}
+                       :file_history_panel {:q "<cmd>DiffviewClose<cr>"}
+                       :view {:q "<cmd>DiffviewClose<cr>"}}})
diff --git a/fnl/nvrc/packs/filetype.fnl b/fnl/nvrc/packs/filetype.fnl
new file mode 100644
index 0000000..d24d322
--- /dev/null
+++ b/fnl/nvrc/packs/filetype.fnl
@@ -0,0 +1,3 @@
+(local {: setup} (require :filetype))
+
+(setup {:overrides {:complex {:.*neomutt-.* :mail}}})
diff --git a/fnl/nvrc/packs/harpoon.fnl b/fnl/nvrc/packs/harpoon.fnl
new file mode 100644
index 0000000..073f406
--- /dev/null
+++ b/fnl/nvrc/packs/harpoon.fnl
@@ -0,0 +1,3 @@
+(local {: setup} (require :harpoon))
+
+(setup {:save_on_toggle true})
diff --git a/fnl/nvrc/packs/mergetool.fnl b/fnl/nvrc/packs/mergetool.fnl
new file mode 100644
index 0000000..5a8cfba
--- /dev/null
+++ b/fnl/nvrc/packs/mergetool.fnl
@@ -0,0 +1,7 @@
+(import-macros {: setv!} :nvrc.macro.set)
+
+(setv! MergetoolSetLayoutCallback
+  (fn [split]
+    (when (and (= "mr,b" (. split :layout)) (= :b (. split :split)))
+      (set vim.wo.diff false)
+      (vim.cmd "resize 15"))))
diff --git a/fnl/nvrc/packs/nvimtree.fnl b/fnl/nvrc/packs/nvimtree.fnl
deleted file mode 100644
index 83326ea..0000000
--- a/fnl/nvrc/packs/nvimtree.fnl
+++ /dev/null
@@ -1,44 +0,0 @@
-(import-macros {: setv!} :nvrc.macro.set)
-(local {: setup} (require :nvim-tree))
-
-(setv! nvim_tree_add_trailing 0)
-(setv! nvim_tree_git_hl 1)
-(setv! nvim_tree_highlight_opened_files 0)
-(setv! nvim_tree_indent_markers 1)
-(setv! nvim_tree_quit_on_open 0)
-(setv! nvim_tree_root_folder_modifier
-      (table.concat {1 ":t:gs?$?/.." 2 (string.rep " " 1000) 3 "?:gs?^??"}))
-(setv! nvim_tree_window_picker_exclude
-      {:filetype {1 :notify 2 :packer 3 :qf} :buftype {1 :terminal}})
-
-(setv! nvim_tree_show_icons {:folders 0 :files 0 :git 0 :folder_arrows 0})
-
-; Nvimtree still shows folder icon despite folders being disabled
-; Maybe the nvim_tree_show_icons option isn't really working?
-(setv! nvim_tree_symlink_arrow " -> ")
-(setv! nvim_tree_icons {:default ""
-                       :symlink "~"
-                       :git {:deleted :x
-                             :ignored "?"
-                             :renamed "->"
-                             :staged "*"
-                             :unmerged "!"
-                             :unstaged "!"
-                             :untracked "!"}
-                       :folder {:default "+"
-                                :empty "?"
-                                :empty_open "-"
-                                :open "-"
-                                :symlink "~"
-                                :symlink_open "~-"}})
-
-(setup {:filters {:dotfiles false}
-        :disable_netrw true
-        :hijack_netrw true
-        :auto_close false
-        :open_on_tab false
-        :hijack_cursor true
-        :update_cwd true
-        :update_focused_file {:enable true :update_cwd false}
-        :view {:allow_resize true :side :left :width 25 :hide_root_folder true}
-        :git {:enable false :ignore false}})
diff --git a/fnl/nvrc/packs/treesitter.fnl b/fnl/nvrc/packs/treesitter.fnl
index d43f97a..befcbc9 100644
--- a/fnl/nvrc/packs/treesitter.fnl
+++ b/fnl/nvrc/packs/treesitter.fnl
@@ -4,17 +4,27 @@
 
 (setup {:ensure_installed [:fennel :lua :nix]
         :highlight {:enable true}
+        :context_commentstring {:enable true
+                                :config {:fennel "; %s"}}
+        :rainbow {:enable true
+                  :extended_mode true
+                  :max_file_lines 2000
+                  :disable ["c" "cpp"]
+                  :colors [
+                           (. colors :skyblue)
+                           (. colors :blue)
+                           (. colors :violet)
+                           (. colors :magenta)]}
         :indent {:enable true}
         :refactor {:highlight_definitions {:enable true}
                    :highlight_current_scope {:enable false}
                    :smart_rename {:enable true
-                                  :keymaps {:smart_rename :<localleader>rn}}
+                                  :keymaps {:smart_rename :grr}}
                    :navigation {:enable true
-                                :keymaps {:goto_definition :<localleader>gd
-                                          :list_definitions :<localleader>ld
-                                          :list_definitions_toc :<localleader>td
-                                          :goto_next_usage :<a-*>
-                                          :goto_previous_usage "<a-#>"}}}
+                                :keymaps {:goto_definition :gnd
+                                          :list_definitions :gnD
+                                          :goto_next_usage :<M-2>
+                                          :goto_previous_usage :<M-1>}}}
         :textobjects {:select {:enable true
                                :lookahead true
                                :keymaps {:if "@function.inner"
diff --git a/init.lua b/init.lua
index 6829152..c14a467 100644
--- a/init.lua
+++ b/init.lua
@@ -20,6 +20,4 @@ ensure("wbthomason", "packer.nvim")
 ensure("rktjmp", "hotpot.nvim")
 require("hotpot").setup { provide_require_fennel = true }
 
-vim.opt.termguicolors = true
-
 require("nvrc.ignite")