diff options
Diffstat (limited to 'fnl/nvrc/packs')
-rw-r--r-- | fnl/nvrc/packs/blankline.fnl | 11 | ||||
-rw-r--r-- | fnl/nvrc/packs/cmp.fnl | 56 | ||||
-rw-r--r-- | fnl/nvrc/packs/feline.fnl | 144 | ||||
-rw-r--r-- | fnl/nvrc/packs/gitsigns.fnl | 7 | ||||
-rw-r--r-- | fnl/nvrc/packs/lsp_signature.fnl | 15 | ||||
-rw-r--r-- | fnl/nvrc/packs/lspconfig.fnl | 50 | ||||
-rw-r--r-- | fnl/nvrc/packs/nvimtree.fnl | 44 | ||||
-rw-r--r-- | fnl/nvrc/packs/telescope.fnl | 49 | ||||
-rw-r--r-- | fnl/nvrc/packs/treesitter.fnl | 29 |
9 files changed, 405 insertions, 0 deletions
diff --git a/fnl/nvrc/packs/blankline.fnl b/fnl/nvrc/packs/blankline.fnl new file mode 100644 index 0000000..3139174 --- /dev/null +++ b/fnl/nvrc/packs/blankline.fnl @@ -0,0 +1,11 @@ +(local {: setup} (require :indent_blankline)) + +(setup {:indentLine_enabled 1 + :char "▏" + :filetype_exclude {:help :terminal + :packer :lspinfo + :TelescopePrompt :TelescopeResults + :lsp-installer ""} + :buftype_exclude {1 :terminal} + :show_trailing_blankline_indent false + :show_first_indent_level false}) diff --git a/fnl/nvrc/packs/cmp.fnl b/fnl/nvrc/packs/cmp.fnl new file mode 100644 index 0000000..3b70af5 --- /dev/null +++ b/fnl/nvrc/packs/cmp.fnl @@ -0,0 +1,56 @@ +(import-macros {: set!} :nvrc.macro.opt) +(local cmp (require :cmp)) + +(set! completeopt "menuone,noselect") + +(local icons {:Text "(t)" + :Method "(m)" + :Function "(f)" + :Constructor "(cs)" + :Field "(s)" + :Variable "(v)" + :Class "(c)" + :Interface "(i)" + :Module "(m)" + :Property "(p)" + :Unit "(u)" + :Value "(v)" + :Enum "(e)" + :Keyword "(k)" + :Snippet "(sn)" + :Color "(co)" + :File "(fi)" + :Reference "(r)" + :Folder "(fl)" + :EnumMember "(em)" + :Constant "(cn)" + :Struct "(s)" + :Event "(ev)" + :Operator "(op)" + :TypeParameter "(tp)"}) + +(cmp.setup { + :formatting {:format (fn [entry vim-item] + (set vim-item.kind + (string.format "%s %s" + (. icons vim-item.kind) + vim-item.kind)) + (set vim-item.menu + (. {:nvim_lsp "[LSP]"} + entry.source.name)) + vim-item)} + :mapping {:<C-p> (cmp.mapping.select_prev_item) + :<C-n> (cmp.mapping.select_next_item) + :<C-d> (cmp.mapping.scroll_docs (- 4)) + :<C-f> (cmp.mapping.scroll_docs 4) + :<C-Space> (cmp.mapping.complete) + :<C-e> (cmp.mapping.close) + :<CR> (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace + :select true}) + :Tab (fn [fallback] + (if (cmp.visible) (cmp.select_next_item)"") + (fallback)) + :<S-Tab> (fn [fallback] + (if (cmp.visible) (cmp.select_next_item)"") + (fallback))} + :sources {1 {:name :nvim_lsp}}}) diff --git a/fnl/nvrc/packs/feline.fnl b/fnl/nvrc/packs/feline.fnl new file mode 100644 index 0000000..4953a7d --- /dev/null +++ b/fnl/nvrc/packs/feline.fnl @@ -0,0 +1,144 @@ +(local feline (require :feline)) +(local lsp (require :feline.providers.lsp)) +(local lsp_severity vim.diagnostic.severity) +(local vi_mode (require :feline.providers.vi_mode)) +(local git (require :feline.providers.git)) + +(local colors (require :nvrc.colors)) +(local utils (require :nvrc.utils)) + +(local vi_mode_colors {:NORMAL (. colors :green) + :INSERT (. colors :red) + :VISUAL (. colors :yellow) + :OP (. colors :green) + :BLOCK (. colors :skyblue) + :REPLACE (. colors :violet) + :V-REPLACE (. colors :violet) + :ENTER (. colors :skyblue) + :MORE (. colors :skyblue) + :SELECT (. colors :orange) + :COMMAND (. colors :green) + :SHELL (. colors :green) + :TERM (. colors :green) + :NONE (. colors :yellow)}) + +(local modules {:pad {:provider "▊ " :hl {:fg (. colors :skyblue)}} + :current_position {:provider :position + :left_sep " " + :right_sep {1 " " + 2 {:str :vertical_bar_thin + :hl {:fg :fg :bg :bg}}}} + :vi_mode {:provider :vi_mode + :icon "" + :right_sep " " + :hl (fn [] + {:name (vi_mode.get_mode_highlight_name) + :fg (vi_mode.get_mode_color)})} + :file {:info {:provider {:name :file_info + :opts {:file_modified_icon "[+]" + :file_readonly_icon "!w "}} + :icon "" + :right_sep " " + :hl {:fg (. colors :orange) :style :bold}} + :encoding {:provider :file_encoding + :icon "" + :right_sep " " + :hl {:fg (. colors :magenta) :style :bold}} + :type {:provider :file_type + :icon "" + :right_sep " " + :hl {:fg (. colors :magenta) :style :bold}} + :size {:provider :file_size + :right_sep {1 " " + 2 {:str :vertical_bar_thin + :hl {:fg :fg :bg :bg}}}}} + :line_percentage {:provider :line_percentage + :right_sep " " + :hl {:style :bold}} + :scroll_bar {:provider :scroll_bar + :right_sep " " + :hl {:fg (. colors :skyblue) :style :bold}} + :lsp {:name {:provider :lsp_client-names + :icon "" + :right_sep " " + :hl {:fg (. colors :yellow)}} + :load_fidget {:provider #(utils.lsp_fidget) + :enabled #(utils.will_it_fit 80) + :hl {:fg (. colors :green)}} + :diag_err {:provider :diagnostic_errors + :enabled #(lsp.diagnostics_exist lsp_severity.ERROR) + :left_sep " " + :icon :E + :hl {:fg (. colors :red)}} + :diag_warn {:provider :diagnostic_warnings + :enabled #(lsp.diagnostics_exist lsp_severity.WARN) + :left_sep " " + :icon :W + :hl {:fg (. colors :yellow)}} + :diag_info {:provider :diagnostic_info + :enabled #(lsp.diagnostics_exist lsp_severity.INFO) + :left_sep " " + :icon :I + :hl {:fg (. colors :skyblue)}} + :diag_hint {:provider :diagnostic_hints + :enabled #(lsp.diagnostics_exist lsp_severity.HINT) + :left_sep " " + :icon :H + :hl {:fg (. colors :white)}}} + :git {:branch {:provider :git_branch + :enabled #(git.git_info_exists) + :icon "*" + :right_sep " " + :hl {:fg (. colors :violet) :style :bold}} + :add {:provider :git_diff_added + :enabled #(git.git_info_exists) + :icon "+" + :right_sep " " + :hl {:fg (. colors :green)}} + :change {:provider :git_diff_changed + :enabled #(git.git_info_exists) + :icon "~" + :right_sep " " + :hl {:fg (. colors :orange)}} + :remove {:provider :git_diff_removed + :enabled #(git.git_info_exists) + :icon "-" + :right_sep " " + :hl {:fg (. colors :red)}}}}) + +(local comps {:left {:active [(. modules :pad) + (. modules :vi_mode) + (. modules :file :info) + (. modules :file :size) + (. modules :current_position) + (. modules :lsp :diag_err) + (. modules :lsp :diag_warn) + (. modules :lsp :diag_info) + (. modules :lsp :diag_hint)] + :inactive []} + :middle {:active [(. modules :lsp :load_fidget)] + :inactive []} + :right {:active [(. modules :git :branch) + (. modules :git :add) + (. modules :git :change) + (. modules :git :remove) + (. modules :file :encoding) + (. modules :file :type) + (. modules :line_percentage) + (. modules :scroll_bar)] + :inactive []}}) + +(local components + {:active [comps.left.active comps.middle.active comps.right.active] + :inactive [comps.left.inactive comps.middle.inactive comps.right.inactive]}) + +(local properties + {:force_inactive {:filetypes [:NvimTree :packer] + :buftypes [:terminal :packer]}}) + +(feline.setup {:theme colors + :default_bg (. colors :bg) + :default_fg (. colors :fg) + : components + : properties + : vi_mode_colors}) diff --git a/fnl/nvrc/packs/gitsigns.fnl b/fnl/nvrc/packs/gitsigns.fnl new file mode 100644 index 0000000..fe500a8 --- /dev/null +++ b/fnl/nvrc/packs/gitsigns.fnl @@ -0,0 +1,7 @@ +(local {: setup} (require :gitsigns)) + +(setup {:signs {:add {:hl :DiffAdd :text "│" :numhl :GitSignsAddNr} + :change {:hl :DiffChange :text "│" :numhl :GitSignsChangeNr} + :delete {:hl :DiffDelete :text "_" :numhl :GitSignsDeleteNr} + :topdelete {:hl :DiffDelete :text "‾" :numhl :GitSignsDeleteNr} + :changedelete {:hl :DiffChangeDelete :text "~" :numhl :GitSignsChangeNr}}}) diff --git a/fnl/nvrc/packs/lsp_signature.fnl b/fnl/nvrc/packs/lsp_signature.fnl new file mode 100644 index 0000000..b14a374 --- /dev/null +++ b/fnl/nvrc/packs/lsp_signature.fnl @@ -0,0 +1,15 @@ +(local {: setup} (require :lsp_signature)) + +(setup {:bind true + :doc_lines 0 + :floating_window true + :fix_pos true + :hint_enable true + :hint_scheme :String + :hint_prefix "(i) " + :hi_parameter :Search + :max_height 22 + :max_width 120 + :handler_opts {:border :single} + :zindex 200 + :padding ""}) diff --git a/fnl/nvrc/packs/lspconfig.fnl b/fnl/nvrc/packs/lspconfig.fnl new file mode 100644 index 0000000..83a4146 --- /dev/null +++ b/fnl/nvrc/packs/lspconfig.fnl @@ -0,0 +1,50 @@ +(local lsp (require :lspconfig)) +(local {: highlight} (require :nvrc.macro.color)) +(local {: merge} (require :nvrc.utils)) +(local colors (require :nvrc.colors)) + +(fn on_attach [client bufnr] + (highlight :DiagnosticError {:fg (. colors :red)}) + (highlight :DiagnosticWarn {:fg (. colors :yellow)}) + (highlight :DiagnosticInformation {:fg (. colors :green)}) + (highlight :DiagnosticHint {:fg (. colors :grey)}) + (if client.resolved_capabilities.document_highlight + (do + (highlight :LspReferenceRead {:underline true}) + (highlight :LspReferenceText {:underline true}) + (highlight :LspReferenceWrite {:underline true}) + (vim.api.nvim_exec "augroup lsp_document_highlight + autocmd! * <buffer> + autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() + augroup END" false)))) + +(fn better_root_pattern [patterns except-patterns] + "match path if one of the given patterns is matched, EXCEPT if one of the except-patterns is matched" + (fn [path] + (when (not ((lsp.util.root_pattern except-patterns) path)) + ((lsp.util.root_pattern patterns) path)))) + +(local default_capabilities (vim.lsp.protocol.make_client_capabilities)) + +(fn init_lsp [lsp-name ?opts] + "initialize a language server with defaults" + (let [merged-opts (merge {: on_attach + :capabilities default_capabilities} + (or ?opts {}))] + ((. lsp lsp-name :setup) merged-opts))) + +(tset vim.lsp.handlers :textDocument/publishDiagnostics + (vim.lsp.with vim.lsp.diagnostic.on_publish_diagnostics + {:update_in_insert false + :virtual_text {:prefix "-"} + :signs false})) + +(init_lsp :ccls) +(init_lsp :hls) +(init_lsp :rust_analyzer) + +(vim.cmd "highlight link LspSemantic_type Include") +(vim.cmd "highlight link LspSemantic_function Identifier") +(vim.cmd "highlight link LspSemantic_struct Number") +(vim.cmd "highlight LspSemantic_variable guifg=gray") +(vim.cmd "highlight link LspSemantic_keyword Structure") diff --git a/fnl/nvrc/packs/nvimtree.fnl b/fnl/nvrc/packs/nvimtree.fnl new file mode 100644 index 0000000..83326ea --- /dev/null +++ b/fnl/nvrc/packs/nvimtree.fnl @@ -0,0 +1,44 @@ +(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/telescope.fnl b/fnl/nvrc/packs/telescope.fnl new file mode 100644 index 0000000..9f9eb0f --- /dev/null +++ b/fnl/nvrc/packs/telescope.fnl @@ -0,0 +1,49 @@ +(local telescope (require :telescope)) + +(telescope.setup {:defaults {:vimgrep_arguments {1 :rg + 2 :--color=never + 3 :--no-heading + 4 :--with-filename + 5 :--line-number + 6 :--column + 7 :--smart-case} + :prompt_prefix "Search: " + :selection_caret " " + :entry_prefix " " + :initial_mode :insert + :selection_strategy :reset + :sorting_strategy :ascending + :layout_strategy :horizontal + :layout_config {:horizontal {:prompt_position :top + :preview_width 0.55 + :results_width 0.8} + :vertical {:mirror false} + :width 0.87 + :height 0.8 + :preview_cutoff 120} + :file_sorter (. (require :telescope.sorters) + :get_fuzzy_file) + :file_ignore_patterns {1 :node_modules} + :generic_sorter (. (require :telescope.sorters) + :get_generic_fuzzy_sorter) + :path_display {1 :truncate} + :winblend 0 + :border {} + :borderchars {1 "─" + 2 "│" + 3 "─" + 4 "│" + 5 "╭" + 6 "╮" + 7 "╯" + 8 "╰"} + :use_less false + :set_env {:COLORTERM :truecolor} + :file_previewer (. (require :telescope.previewers) + :vim_buffer_cat.new) + :grep_previewer (. (require :telescope.previewers) + :vim_buffer_vimgrep.new) + :qflist_previewer (. (require :telescope.previewers) + :vim_buffer_qflist.new)}}) + +(telescope.load_extension :terms) diff --git a/fnl/nvrc/packs/treesitter.fnl b/fnl/nvrc/packs/treesitter.fnl new file mode 100644 index 0000000..6e02ae5 --- /dev/null +++ b/fnl/nvrc/packs/treesitter.fnl @@ -0,0 +1,29 @@ +(local {: setup} (require :nvim-treesitter.configs)) + +(local colors (require :nvrc.colors)) + +(setup {:ensure_installed [:fennel :lua] + :highlight {:enable true} + :indent {:enable true} + :refactor {:highlight_definitions {:enable true} + :highlight_current_scope {:enable false} + :smart_rename {:enable true + :keymaps {:smart_rename :<localleader>rn}} + :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-#>"}}} + :textobjects {:select {:enable true + :lookahead true + :keymaps {:if "@function.inner" + :af "@function.outer" + :ic "@class.inner" + :ac "@class.outer" + :ia "@parameter.inner" + :aa "@parameter.outer"}} + :swap {:enable true + :swap_next {:<localleader>> "@parameter.inner"} + :swap_previous {:<localleader>< "@parameter.inner"}}} + :matchup {:enable true}}) |