"=============================================================================
" FILE: autoload/incsearch/over/modules/pattern_saver.vim
" AUTHOR: haya14busa
" License: MIT license
" @vimlint(EVL103, 1, a:cmdline)
"=============================================================================
scriptencoding utf-8
let s:save_cpo = &cpo
set cpo&vim

let s:pattern_saver =  {
\   'name' : 'PatternSaver',
\   'pattern' : '',
\   'hlsearch' : &hlsearch
\}

function! s:pattern_saver.on_enter(cmdline) abort
  if ! g:incsearch#no_inc_hlsearch
    let self.pattern = @/
    let self.hlsearch = &hlsearch
    if exists('v:hlsearch')
      let self.vhlsearch = v:hlsearch
    endif
    set hlsearch | nohlsearch
  endif
endfunction

function! s:pattern_saver.on_leave(cmdline) abort
  if ! g:incsearch#no_inc_hlsearch
    let is_cancel = a:cmdline.exit_code()
    if is_cancel
      let @/ = self.pattern
    endif
    let &hlsearch = self.hlsearch
    if exists('v:hlsearch')
      let v:hlsearch = self.vhlsearch
    endif
  endif
endfunction

function! incsearch#over#modules#pattern_saver#make() abort
  return deepcopy(s:pattern_saver)
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo
" __END__
" vim: expandtab softtabstop=2 shiftwidth=2 foldmethod=marker