# ツリー表示やexrenameなどを提供する高機能なファイラー
# neo-tree.nvimとかよりバッファーの挙動が好き
[[plugins]]
repo = 'lambdalisue/fern.vim'
on_cmd = 'Fern'
hook_add = '''
  cabbrev f. Fern . -reveal=%
'''
hook_source = '''
  let g:fern#hide_cursor = v:true
  let g:fern#keepalt_on_edit = v:false
  let g:fern#keepjumps_on_edit = v:false
  let g:fern#default_hidden = v:true
  let g:fern#disable_default_mappings = v:true
'''
[plugins.ftplugin]
fern = '''
  nmap <buffer><nowait><silent> <space> <Plug>(fern-action-mark:toggle)
  nmap <buffer><nowait><silent> <C-l>   <Cmd>nohlsearch<CR><Plug>(fern-action-reload:all)
  nmap <buffer><nowait><silent> h       <Plug>(fern-action-collapse)
  nmap <buffer><nowait><silent> <C-h>   <Plug>(fern-action-leave)
  nmap <buffer><nowait><silent> <Enter> <Plug>(fern-action-open)
  nmap <buffer><nowait><silent> y       <Plug>(fern-action-yank:path)
  nmap <buffer><nowait><silent> <C-c>   <Plug>(fern-action-cancel)
  nmap <buffer><nowait><silent> N       <Plug>(fern-action-new-file)
  nmap <buffer><nowait><silent> K       <Plug>(fern-action-new-dir)
  nmap <buffer><nowait><silent> d       <Plug>(fern-action-trash)
  nmap <buffer><nowait><silent> gr      <Plug>(fern-action-grep)
  nmap <buffer><nowait><silent> r       <Plug>(fern-action-rename)
  nmap <buffer><nowait><silent><expr> l
        \ fern#smart#leaf('<Plug>(fern-action-open)', '<Plug>(fern-action-expand)')
'''

# Fernの表示をアイコンとかつけてかわいい感じにしてくれる
[[plugins]]
repo = 'lambdalisue/fern-renderer-nerdfont.vim'
depends = ['nerdfont.vim', 'glyph-palette.vim']
on_source = 'fern.vim'
hook_source = '''
  let g:fern#renderer = 'nerdfont'
  let g:fern#renderer#nerdfont#indent_markers = v:true
'''
[plugins.ftplugin]
fern = '''
  call glyph_palette#apply()
'''

# Fernのバッファーでカーソル位置のファイルの中身をプレビューできる
# たまに便利
[[plugins]]
repo = 'yuki-yano/fern-preview.vim'
on_source = 'fern.vim'
[plugins.ftplugin]
fern = '''
  nmap <buffer> p     <Plug>(fern-action-preview:toggle)
  nmap <buffer> <C-p> <Plug>(fern-action-preview:auto:toggle)
  nmap <buffer> <C-d> <Plug>(fern-action-preview:scroll:down:half)
  nmap <buffer> <C-u> <Plug>(fern-action-preview:scroll:up:half)
'''

# - Fernのバッファーで編集済み(作業中)のファイルが識別しやすくなる
# - 対象のファイルが沢山あると重くなるのでこれ入れてるときは
#   fernのディレクトリを深くしたくない
[[plugins]]
repo = 'lambdalisue/fern-git-status.vim'
on_source = 'fern.vim'
hook_source = '''
  call fern_git_status#init()
'''

# fern-renderer-nerdfontで表示するアイコンの色付けを提供する
[[plugins]]
repo = 'lambdalisue/glyph-palette.vim'
lazy = true

# fern-renderer-nerdfontで使うための、ファイル名->アイコンの変換を提供する
[[plugins]]
repo = 'lambdalisue/nerdfont.vim'

# :e %:h のようにディレクトリを編集しようとしたときにnetrwではなく
# Fernを起動する
[[plugins]]
repo = 'lambdalisue/fern-hijack.vim'
on_if = "isdirectory(expand('<afile>'))"
depends = 'fern.vim'
hook_add = '''
  let g:loaded_netrwPlugin = 1
'''

[[plugins]]
repo = 'lambdalisue/fern-bookmark.vim'
on_source = 'fern.vim'
hook_add = '''
  nmap <space>o <Cmd>Fern bookmark:///<CR>
'''
[plugins.ftplugin]
fern = '''
  nmap <buffer> B <Plug>(fern-action-save-as-bookmark)
'''