Mercurial > dotfiles
view vim/autoload/ctrlp/projectjump.vim @ 240:3a6b11d16a2a
Simpler registration for CtrlP extensions.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 12 Dec 2014 16:53:19 -0800 |
parents | |
children |
line wrap: on
line source
" ============================================================================= " File: autoload/ctrlp/projectjump.vim " Description: Project Jumper Extension " Author: Ludovic Chabant <github.com/ludovicchabant> " ============================================================================= " Global Settings {{{ if !exists('g:ctrlp_projectjump_debug') let g:ctrlp_projectjump_debug = 0 endif if !exists('g:ctrlp_projectjump_trace') let g:ctrlp_projectjump_trace = 0 endif if exists('g:ctrlp_projectjump_loaded') && g:ctrlp_projectjump_loaded \ && !g:ctrlp_projectjump_debug finish endif let g:ctrlp_projectjump_loaded = 1 if !exists('g:ctrlp_projectjump_roots') let g:ctrlp_projectjump_roots = [] endif " }}} " Init {{{ if !exists('g:ctrlp_ext_vars') let g:ctrlp_ext_vars = [] endif call add(g:ctrlp_ext_vars, { \ 'init': 'ctrlp#projectjump#init()', \ 'exit': 'ctrlp#projectjump#exit()', \ 'accept': 'ctrlp#projectjump#accept', \ 'lname': 'projectjump', \ 'sname': 'prjmp', \ 'type': 'project' \ }) let s:ext_id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) command! CtrlPProjectJump call ctrlp#init(s:ext_id) " }}} " Callbacks {{{ function! ctrlp#projectjump#init() abort let l:project_roots = [] for prj in g:ctrlp_projectjump_roots let l:prj_type = get(prj, 'type', 'project') if l:prj_type == 'project' call add(l:project_roots, prj['path']) elseif l:prj_type == 'parent' let l:subdirs = glob(prj['path'], 0, 1) for sd in l:subdirs call add(l:project_roots, sd) endfor else echoerr "CtrlPProjectJump: Unsupported project root type: ".l:prj_type endif endfor return l:project_roots endfunction function! ctrlp#projectjump#accept(mode, str) abort call ctrlp#exit() call ctrlp#init(0, {'dir': a:str}) endfunction function! ctrlp#projectjump#exit() abort endfunction " }}} " Internals {{{ function! s:trace(message) abort if g:ctrlp_projectjump_trace echom "ctrlp_projectjump: " . a:message endif endfunction " }}}