[NeoVim] More Fennel

This commit is contained in:
2022-08-23 01:55:53 +02:00
parent 65833eb514
commit 887d14a9d0
5 changed files with 181 additions and 265 deletions

View File

@@ -0,0 +1,4 @@
(fn setup [module args]
`((. (require ,module) :setup) ,args))
{: setup}

View File

@@ -0,0 +1,172 @@
(import-macros {: g! : exec : map! : set!} :hibiscus.vim)
(import-macros {: setup} :macros)
; Theme
(g! :solarized_italic_comments true)
(g! :solarized_italic_keywords true)
(g! :solarized_italic_functions true)
(g! :solarized_italic_variables false)
(g! :solarized_contrast true)
(g! :solarized_borders false)
(g! :solarized_disable_background false)
((. (require :solarized) :set))
(require :popup)
; TreeSitter
(setup :nvim-treesitter.configs {
:ensure_installed [:c :lua :rust :java :python :javascript :typescript :fennel]
:sync_install false
:ignore_install []
:highlight {:enable true
:disable []
:additional_vim_regex_highlighting false}})
; Feline
(setup :feline {
:theme (require :feline.feline-solarized)
:force_inactive {:filetypes ["^neo\\-tree$"
"^aerial$"
"^packer$"
"^startify$"
"^fugitive$"
"^fugitiveblame$"
"^qf$"
"^help$"
"^DiffviewFileHistory"]
:buftypes ["^terminal$"]
:bufnames ["neo\\-.*"]}})
; Window picker
(setup :window-picker {
:autoselect_one true
:selection_chars "ABCDEFGHIJKLMNOP"
:filter_rules {:bo {:filetype [:NvimTree :neo-tree :notify :aerial]
:buftype [:terminal]}}})
; NeoTree
(g! :neo_tree_remove_legacy_commands 1)
(setup :neo-tree {
:close_if_last_window true
:window {:width 30
:mappings {:<cr> "open_with_window_picker"
:S "split_with_window_picker"
:s "vsplit_with_window_picker"}}
:filesystem {:filtered_items {:visible true}
:follow_current_file true
:window {:mappings {:/ "noop"
:g/ "fuzzy_finder"
:f "noop"
:ff (fn [] (exec [[:Telescope "find_files"]]))
:fg (fn [] (exec [[:Telescope "live_grep"]]))
:<S-Right> (fn [])
:<S-Left> (fn [])}}}
:renderers {:directory [[:indent]
[:icon]
[:current_filter]
[:name]
[:clipboard]
{1 "diagnostics" :errors_only true}]
:file [[:indent]
[:icon]
{1 "name" :use_git_status_colors true :zindex 10}
[:clipboard]
[:bufnr]
[:modified]
[:diagnostics]
[:git_status]]}})
(map! [n] :f ":Neotree focus<CR>")
; Smart splits
(local smart-splits (require :smart-splits))
(map! [n] :<C-Left> smart-splits.move_cursor_left)
(map! [n] :<C-Down> smart-splits.move_cursor_down)
(map! [n] :<C-Up> smart-splits.move_cursor_up)
(map! [n] :<C-Right> smart-splits.move_cursor_right)
(map! [n] :<C-S-Up> smart-splits.resize_up)
(map! [n] :<C-S-Down> smart-splits.resize_down)
(map! [n] :<C-S-Left> smart-splits.resize_left)
(map! [n] :<C-S-Right> smart-splits.resize_right)
(require :bufdelete)
; Bufferline
(local colors (require :solarized.colors))
(setup :bufferline {
:options {:close_command "Bdelete %d"
:right_mouse_command "Bdelete %d"
:offsets [{:filetype "neo-tree" :text "File Explorer" :padding 1}
{:filetype "aerial" :text "Outline" :padding 1}]
:enforce_regular_tabs true
:separator_style "slant"}
:highlights {:separator {:fg colors.bg_alt}
:separator_visible {:fg colors.bg_alt}
:separator_selected {:fg colors.bg_alt}}})
(map! [n] :<S-Right> ":bnext<CR>")
(map! [n] :<S-Left> ":bprevious<CR>")
(map! [n] :q ":Bdelete<CR>")
(setup :nvim-autopairs {})
(setup :gitsigns {})
(setup :cinnamon {})
; Aerial
(setup :aerial {
:close_behavior "global"
:open_automatic true
:placement_editor_edge true
:width 30
:on_attach (fn [bufnr] (vim.api.nvim_buf_set_keymap bufnr "n" "t"
((. (require :map_utils) :lua_fn) (fn [] (vim.tbl_map (fn [buf] (if (= (vim.api.nvim_buf_get_option buf "filetype") "aerial")
(vim.tbl_map (fn [win] (vim.api.nvim_set_current_win win))
(vim.fn.win_findbuf buf))))
(vim.api.nvim_list_bufs))))
{}))})
(setup :guess-indent)
; Telescope
(local actions (require :telescope.actions))
(setup :telescope {
:defaults {:mappings {:n {:S actions.file_split
:s actions.file_vsplit}}
:get_selection_window (. (require :window-picker) :pick_window)}
:pickers {:find_files {:find_command [:fd "--type" "f" "--strip-cwd-prefix" "--hidden"]}
:live_grep {:vimgrep_arguments ["rg" "--color=never" "--no-heading" "--with-filename" "--line-number" "--column" "--smart-case" "--hidden"]}}})
; DiffView
(setup :diffview {
:keymaps {:view {:q ":tabc<CR>"}
:file_panel {:q ":tabc<CR>"}
:file_history_panel {:q ":tabc<CR>"}}})
(map! [n] :r ":DiffviewOpen<CR>")
(map! [n] :R ":DiffviewFileHistory %<CR>")
; Null-LS
(setup :null-ls {
:sources [(. (. (. (require :null-ls) :builtins) :diagnostics) :flake8)]})
; VimTex
(g! :vimtex_view_method "zathura")
; General settings
(g! :maplocalleader ",")
(set! :clipboard "unnamedplus")
(set! :expandtab true)
(set! :fileencoding "utf-8")
(set! :ignorecase true)
(set! :mouse "a")
(set! :showmode false)
(set! :number true)
(set! :shiftwidth 2)
(set! :signcolumn "yes")
(set! :smartcase true)
(set! :spelllang "en")
(set! :tabstop 2)
; Startup
(if (or (= (vim.fn.expand "%") "") (not= (vim.fn.isdirectory (vim.fn.expand "%")) 0))
((. (require :neo-tree.command) :_command) (vim.fn.getcwd))
((. (require :neo-tree.command) :_command) "show" (vim.fn.getcwd)))