annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
240
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 " =============================================================================
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 " File: autoload/ctrlp/projectjump.vim
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 " Description: Project Jumper Extension
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 " Author: Ludovic Chabant <github.com/ludovicchabant>
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 " =============================================================================
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 " Global Settings {{{
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 if !exists('g:ctrlp_projectjump_debug')
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 let g:ctrlp_projectjump_debug = 0
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 if !exists('g:ctrlp_projectjump_trace')
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 let g:ctrlp_projectjump_trace = 0
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 if exists('g:ctrlp_projectjump_loaded') && g:ctrlp_projectjump_loaded
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 \ && !g:ctrlp_projectjump_debug
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 finish
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 let g:ctrlp_projectjump_loaded = 1
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 if !exists('g:ctrlp_projectjump_roots')
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 let g:ctrlp_projectjump_roots = []
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 " }}}
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 " Init {{{
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 if !exists('g:ctrlp_ext_vars')
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 let g:ctrlp_ext_vars = []
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 call add(g:ctrlp_ext_vars, {
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 \ 'init': 'ctrlp#projectjump#init()',
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 \ 'exit': 'ctrlp#projectjump#exit()',
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 \ 'accept': 'ctrlp#projectjump#accept',
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 \ 'lname': 'projectjump',
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 \ 'sname': 'prjmp',
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 \ 'type': 'project'
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 \ })
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 let s:ext_id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 command! CtrlPProjectJump call ctrlp#init(s:ext_id)
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 " }}}
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 " Callbacks {{{
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 function! ctrlp#projectjump#init() abort
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 let l:project_roots = []
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 for prj in g:ctrlp_projectjump_roots
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 let l:prj_type = get(prj, 'type', 'project')
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 if l:prj_type == 'project'
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 call add(l:project_roots, prj['path'])
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 elseif l:prj_type == 'parent'
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 let l:subdirs = glob(prj['path'], 0, 1)
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 for sd in l:subdirs
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 call add(l:project_roots, sd)
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 endfor
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 else
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 echoerr "CtrlPProjectJump: Unsupported project root type: ".l:prj_type
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 endfor
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 return l:project_roots
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 endfunction
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69 function! ctrlp#projectjump#accept(mode, str) abort
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 call ctrlp#exit()
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 call ctrlp#init(0, {'dir': a:str})
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 endfunction
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 function! ctrlp#projectjump#exit() abort
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 endfunction
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 " }}}
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 " Internals {{{
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 function! s:trace(message) abort
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 if g:ctrlp_projectjump_trace
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 echom "ctrlp_projectjump: " . a:message
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 endif
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 endfunction
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 " }}}
3a6b11d16a2a Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88