1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 16:10:05 +08:00
SpaceVim/bundle/wildfire.vim/plugin/wildfire.vim
2020-06-13 14:06:35 +08:00

90 lines
2.7 KiB
VimL

" =============================================================================
" File: wildfire.vim
" Description: Smart selection of the closest text object
" Mantainer: Giacomo Comitti (https://github.com/gcmt)
" Url: https://github.com/gcmt/wildfire.vim
" License: MIT
" =============================================================================
" Init
" =============================================================================
if exists("g:loaded_wildfire")
finish
endif
let g:loaded_wildfire = 1
let s:save_cpo = &cpo
set cpo&vim
" Colors
" =============================================================================
fu! s:setup_colors()
hi default link WildfireMark WarningMsg
hi default link WildfirePrompt String
hi default link WildfireShade Comment
endfu
cal s:setup_colors()
" Settings
" =============================================================================
let g:wildfire_objects =
\ get(g:, "wildfire_objects", split("ip i) i] i} i' i\" it"))
let g:wildfire_fuel_map =
\ get(g:, "wildfire_fuel_map", "<ENTER>")
let g:wildfire_water_map =
\ get(g:, "wildfire_water_map", "<BS>")
let g:wildfire_prompt =
\ get(g:, "wildfire_prompt", " Target: ")
let g:wildfire_marks =
\ get(g:, "wildfire_marks", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
" Mappings
" =============================================================================
vnoremap <silent> <Plug>(wildfire-water) :<C-U>call wildfire#Water(v:count1)<CR>
cal wildfire#triggers#Add("<Plug>(wildfire-fuel)", g:wildfire_objects)
cal wildfire#triggers#AddQs("<Plug>(wildfire-quick-select)", g:wildfire_objects)
if !hasmapto('<Plug>(wildfire-fuel)')
if index(wildfire#triggers#All(), g:wildfire_fuel_map) == -1
exe "map" g:wildfire_fuel_map "<Plug>(wildfire-fuel)"
end
end
if !hasmapto('<Plug>(wildfire-water)')
exe "vmap" g:wildfire_water_map "<Plug>(wildfire-water)"
end
" Autocommands
" =============================================================================
fu! s:disable_wildfire()
sil! exec "nnoremap <buffer> " . g:wildfire_fuel_map . " " . g:wildfire_fuel_map
endfu
augroup wildfire
au!
" Disable Wildfire inside buffers with the `buftype` option set (See :h 'buftype')
au BufReadPost * if !empty(&bt) | call s:disable_wildfire() | endif
" Disable Wildfire inside the command-line window
au CmdWinEnter * call s:disable_wildfire()
" Disable Wildfire inside quickfix buffers
au FileType qf call s:disable_wildfire()
" Setup colors
au BufWritePost .vimrc call s:setup_colors()
au Colorscheme * call s:setup_colors()
augroup END
" =============================================================================
let &cpo = s:save_cpo
unlet s:save_cpo