Mercurial > dotfiles
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 |
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 |