local base_colors = require('color').base_colors return { { 'lambdalisue/fern.vim', dependencies = { { 'LumaKernel/fern-mapping-reload-all.vim' }, { 'lambdalisue/fern-git-status.vim' }, { 'lambdalisue/fern-hijack.vim' }, { 'yuki-yano/fern-preview.vim' }, { 'yuki-yano/fern-renderer-web-devicons.nvim' }, { 'lambdalisue/glyph-palette.vim' }, }, cmd = { 'Fern' }, init = function() vim.g['fern#disable_default_mappings'] = true vim.g['fern#drawer_width'] = 40 vim.g['fern#renderer'] = 'nvim-web-devicons' vim.g['fern#hide_cursor'] = true vim.g['fern#window_selector_use_popup'] = true vim.g['fern_preview_window_highlight'] = 'Normal:Normal,FloatBorder:Normal' vim.g['fern_preview_window_calculator'] = { width = function() return vim.fn.min({ vim.fn.float2nr(vim.o.columns * 0.8), 200 }) end, } vim.keymap.set({ 'n' }, 'e', 'Fern . -drawer=') vim.keymap.set({ 'n' }, 'E', 'Fern . -drawer -reveal=%=') vim.api.nvim_create_autocmd({ 'ColorScheme' }, { pattern = { 'gruvbox-material' }, callback = function() vim.api.nvim_set_hl(0, 'FernGitStatusWorktree', { fg = base_colors.red, bg = 'NONE' }) vim.api.nvim_set_hl(0, 'FernGitStatusIndex', { fg = base_colors.green, bg = 'NONE' }) vim.api.nvim_set_hl(0, 'FernGitStatusUnmerged', { fg = base_colors.red, bg = 'NONE' }) vim.api.nvim_set_hl(0, 'FernGitStatusUntracked', { fg = base_colors.red, bg = 'NONE' }) vim.api.nvim_set_hl(0, 'FernGitStatusIgnored', { link = 'Comment' }) end, }) end, config = function() vim.api.nvim_create_autocmd({ 'FileType' }, { pattern = { 'fern' }, callback = function() vim.cmd([[ nnoremap (fern-page-down-wrapper) nnoremap (fern-page-up-wrapper) nnoremap (fern-page-down-or-scroll-down-preview) fern_preview#smart_preview("\(fern-action-preview:scroll:down:half)", "\(fern-page-down-wrapper)") nnoremap (fern-page-down-or-scroll-up-preview) fern_preview#smart_preview("\(fern-action-preview:scroll:up:half)", "\(fern-page-up-wrapper)") nnoremap (fern-action-expand-or-collapse) fern#smart#leaf("\(fern-action-collapse)", "\(fern-action-expand)", "\(fern-action-collapse)") nnoremap (fern-action-open-system-or-open-file) fern#smart#leaf("\(fern-action-open:select)", "\(fern-action-open:system)") nnoremap (fern-action-quit-or-close-preview) fern_preview#smart_preview("\(fern-action-preview:close)\(fern-action-preview:auto:disable)", ":q\") nnoremap (fern-action-wipe-or-close-preview) fern_preview#smart_preview("\(fern-action-preview:close)\(fern-action-preview:auto:disable)", ":bwipe!\") nnoremap (fern-action-page-down-or-scroll-down-preview) fern_preview#smart_preview("\(fern-action-preview:scroll:down:half)", "\(fern-page-down-wrapper)") nnoremap (fern-action-page-down-or-scroll-up-preview) fern_preview#smart_preview("\(fern-action-preview:scroll:up:half)", "\(fern-page-up-wrapper)") nnoremap a (fern-action-choice) nnoremap (fern-action-open-system-or-open-file) nnoremap t (fern-action-expand-or-collapse) nnoremap l (fern-action-open-or-enter) nnoremap h (fern-action-leave) nnoremap x (fern-action-mark:toggle)j xnoremap x (fern-action-mark:toggle)j nnoremap (fern-action-mark:toggle)j xnoremap (fern-action-mark:toggle)j nnoremap N v:hlsearch ? 'N' : '(fern-action-new-file)' nnoremap K (fern-action-new-dir) nnoremap d (fern-action-trash) nnoremap r (fern-action-rename) nnoremap c (fern-action-copy) nnoremap C (fern-action-clipboard-copy) nnoremap m (fern-action-move) nnoremap M (fern-action-clipboard-move) nnoremap P (fern-action-clipboard-paste) nnoremap ! (fern-action-hidden:toggle) nnoremap y (fern-action-yank) nnoremap (fern-action-debug) nnoremap ? (fern-action-help) nnoremap (fern-action-cancel) nnoremap . (fern-repeat) nnoremap q (fern-action-quit-or-close-preview) nnoremap Q (fern-action-wipe-or-close-preview) nnoremap p (fern-action-preview:toggle) nnoremap (fern-action-preview:auto:toggle) nnoremap (fern-action-page-down-or-scroll-down-preview) nnoremap (fern-action-page-down-or-scroll-up-preview) nnoremap R (fern-action-reload:all) ]]) vim.opt_local.number = false vim.opt_local.relativenumber = false end, }) end, }, { 'lambdalisue/glyph-palette.vim', config = function() local vimx = require('artemis') vimx.fn.glyph_palette.apply() end, }, { 'lambdalisue/fern-git-status.vim', config = function() local vimx = require('artemis') vimx.fn.fern_git_status.init() end, }, }