function! s:smart_path() abort if !empty(&buftype) || bufname('%') =~# '^[^:]\+://' return fnamemodify('.', ':p') endif return fnamemodify(expand('%'), ':p:h') endfunctio nnoremap <silent> <Leader>bb :<C-u>Fern bookmark:///<CR> nnoremap <silent> <Leader>ee :<C-u>Fern <C-r>=<SID>smart_path()<CR> -reveal=%<CR> nnoremap <silent> <Leader>EE :<C-u>Fern . -drawer -toggle -reveal=%<CR> nnoremap <silent> <Leader>jj :<C-u>Fern <C-r>=expand(g:junkfile#directory)<CR> -drawer -toggle -reveal=%<CR> nnoremap <silent> <Space><Space>i :<C-u>Fern -wait bookmark:///<CR>:<C-u>Lista<CR> function! s:fern_init() abort " nnoremap <buffer><silent> " \ <Plug>(fern-my-tcd:root-ready) " \ :<C-u>call fern#smart#ready("\<Plug>(fern-action-tcd:root)")<CR> " nmap <buffer> " \ <Plug>(fern-my-enter-and-tcd) " \ <Plug>(fern-action-enter)<Plug>(fern-my-tcd:root-ready) " nmap <buffer> " \ <Plug>(fern-my-leave-and-tcd) " \ <Plug>(fern-action-leave)<Plug>(fern-my-tcd:root-ready) nmap <buffer> \ <Plug>(fern-my-enter-and-tcd) \ <Plug>(fern-action-enter)<Plug>(fern-wait)<Plug>(fern-action-tcd:root) nmap <buffer> \ <Plug>(fern-my-leave-and-tcd) \ <Plug>(fern-action-leave)<Plug>(fern-wait)<Plug>(fern-action-tcd:root) nmap <buffer><expr> \ <Plug>(fern-my-open-or-enter-and-tcd) \ fern#smart#leaf( \ "\<Plug>(fern-action-open)", \ "\<Plug>(fern-my-enter-and-tcd)", \ ) nmap <buffer><expr> \ <Plug>(fern-my-open-or-enter) \ fern#smart#drawer( \ "\<Plug>(fern-my-open-or-enter-and-tcd)", \ "\<Plug>(fern-open-or-enter)", \ ) nmap <buffer><expr> \ <Plug>(fern-my-leave) \ fern#smart#drawer( \ "\<Plug>(fern-my-leave-and-tcd)", \ "\<Plug>(fern-action-leave)", \ ) nmap <buffer><nowait> <Return> <Plug>(fern-my-open-or-enter) nmap <buffer><nowait> <Backspace> <Plug>(fern-my-leave) nmap <buffer><nowait> <C-m> <Plug>(fern-my-open-or-enter) nmap <buffer><nowait> <C-h> <Plug>(fern-my-leave) nmap <buffer><nowait> <Plug>(fern-action-open-and-stay) <Plug>(fern-action-open)<C-w><C-p> nmap <buffer><nowait> ~ :<C-u>Fern ~<CR> " Open bookmark:/// nnoremap <buffer><silent> \ <Plug>(fern-my-enter-bookmark) \ :<C-u>Fern bookmark:///<CR> nmap <buffer><expr><silent> b \ fern#smart#scheme( \ "\<Plug>(fern-my-enter-bookmark)", \ { \ 'bookmark': "\<C-^>", \ }, \ ) endfunction function! s:fern_quickaccess() abort Fern bookmark:/// Lista endfunction augroup my-fern autocmd! * autocmd FileType fern call s:fern_init() augroup END " Disable netrw let g:loaded_netrw = 1 let g:loaded_netrwPlugin = 1 let g:loaded_netrwSettings = 1 let g:loaded_netrwFileHandlers = 1 augroup my-fern-hijack autocmd! autocmd BufEnter * ++nested call s:hijack_directory() augroup END function! s:hijack_directory() abort let path = expand('%:p') if !isdirectory(path) return endif bwipeout % execute printf('Fern %s', fnameescape(path)) endfunction if has('mac') && has('nvim') && !exists('$SSH_CONNECTION') let g:fern#renderer = 'devicons' endif let g:fern#keepalt_on_edit = 1