177 lines
6.9 KiB
Fennel
177 lines
6.9 KiB
Fennel
(import-macros {: g! : exec : map! : set! : augroup!} :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>")
|
|
(map! [n] :F (fn [] (exec [[:Neotree "toggle"] [:Neotree "toggle" "action=show"]])))
|
|
(augroup! :qf [[FileType] [qf] "set nobuflisted|call feedkeys(\"F\")"])
|
|
|
|
; 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]
|
|
(map! [n :buffer] :t (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)))
|