1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- "=============================================================================
- " $Id$
- " File: autoload/lh/icomplete.vim {{{1
- " Author: Luc Hermitte <EMAIL:hermitte {at} free {dot} fr>
- " <URL:http://code.google.com/p/lh-vim/>
- " License: GPLv3 with exceptions
- " <URL:http://code.google.com/p/lh-vim/wiki/License>
- " Version: 3.0.0
- " Created: 03rd Jan 2011
- " Last Update: $Date$
- "------------------------------------------------------------------------
- " Description:
- " Helpers functions to build |ins-completion-menu|
- "
- "------------------------------------------------------------------------
- " Installation:
- " Drop this file into {rtp}/autoload/lh
- " Requires Vim7+
- " History:
- " v3.0.0: GPLv3
- " v2.2.4: first version
- " TODO:
- " - We are not able to detect the end of the completion mode. As a
- " consequence we can't prevent c/for<space> to trigger an abbreviation
- " instead of the right template file.
- " In an ideal world, there would exist an event post |complete()|
- " }}}1
- "=============================================================================
-
- let s:cpo_save=&cpo
- set cpo&vim
- "------------------------------------------------------------------------
- " ## Misc Functions {{{1
- " # Version {{{2
- let s:k_version = 300
- function! lh#icomplete#version()
- return s:k_version
- endfunction
-
- " # Debug {{{2
- let s:verbose = 0
- function! lh#icomplete#verbose(...)
- if a:0 > 0 | let s:verbose = a:1 | endif
- return s:verbose
- endfunction
-
- function! s:Verbose(expr)
- if s:verbose
- echomsg a:expr
- endif
- endfunction
-
- function! lh#icomplete#debug(expr)
- return eval(a:expr)
- endfunction
-
-
- "------------------------------------------------------------------------
- " ## Exported functions {{{1
- " Function: lh#icomplete#run(startcol, matches, Hook) {{{2
- function! lh#icomplete#run(startcol, matches, Hook)
- call lh#icomplete#_register_hook(a:Hook)
- call complete(a:startcol, a:matches)
- return ''
- endfunction
-
- "------------------------------------------------------------------------
- " ## Internal functions {{{1
- " Function: lh#icomplete#_clear_key_bindings() {{{2
- function! lh#icomplete#_clear_key_bindings()
- iunmap <cr>
- iunmap <c-y>
- iunmap <esc>
- " iunmap <space>
- " iunmap <tab>
- endfunction
-
- " Function: lh#icomplete#_register_hook(Hook) {{{2
- function! lh#icomplete#_register_hook(Hook)
- exe 'inoremap <silent> <cr> <cr><c-\><c-n>:call' .a:Hook . '()<cr>'
- exe 'inoremap <silent> <c-y> <c-y><c-\><c-n>:call' .a:Hook . '()<cr>'
- " <c-o><Nop> doesn't work as expected...
- " To stay in INSERT-mode:
- " inoremap <silent> <esc> <c-e><c-o>:<cr>
- " To return into NORMAL-mode:
- inoremap <silent> <esc> <c-e><esc>
-
- call lh#event#register_for_one_execution_at('InsertLeave',
- \ ':call lh#icomplete#_clear_key_bindings()', 'CompleteGroup')
- endfunction
-
- "------------------------------------------------------------------------
- let &cpo=s:cpo_save
- "=============================================================================
- " vim600: set fdm=marker:
|