forked from scrooloose/snipmate-snippets
-
Notifications
You must be signed in to change notification settings - Fork 1
/
support_functions.vim
115 lines (100 loc) · 2.69 KB
/
support_functions.vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"ruby {{{1
function! Snippet_RubyClassNameFromFilename(...)
let name = expand("%:t:r")
if len(name) == 0
if a:0 == 0
let name = 'MyClass'
else
let name = a:1
endif
endif
return Snippet_Camelcase(name)
endfunction
function! Snippet_MigrationNameFromFilename(...)
let name = substitute(expand("%:t:r"), '^.\{-}_', '', '')
if len(name) == 0
if a:0 == 0
let name = 'MyClass'
else
let name = a:1
endif
endif
return Snippet_Camelcase(name)
endfunction
"python {{{1
function! Snippet_PythonClassNameFromFilename(...)
let name = expand("%:t:r")
if len(name) == 0
if a:0 == 0
let name = 'MyClass'
else
let name = a:1
endif
endif
return Snippet_Camelcase(name)
endfunction
"php {{{1
function! Snippet_PHPClassNameFromFilename(...)
let name = expand("%:t:r:r")
if len(name) == 0
if a:0 == 0
let name = 'MyClass'
else
let name = a:1
endif
endif
return name
endfunction
"java {{{1
function! Snippet_JavaClassNameFromFilename(...)
let name = expand("%:t:r")
if len(name) == 0
if a:0 == 0
let name = 'MyClass'
else
let name = a:1
endif
endif
return name
endfunction
function! Snippet_JavaInstanceVarType(name)
let oldview = winsaveview()
if searchdecl(a:name) == 0
normal! B
let old_reg = @"
normal! yaW
let type = @"
let @" = old_reg
call winrestview(oldview)
let type = substitute(type, '\s\+$', '', '')
"searchdecl treats 'return foo;' as a declaration of foo
if type != 'return'
return type
endif
endif
return "<+type+>"
endfunction
"global {{{1
function! s:start_comment()
return substitute(&commentstring, '^\([^ ]*\)\s*%s\(.*\)$', '\1', '')
endfunction
function! s:end_comment()
return substitute(&commentstring, '^.*%s\(.*\)$', '\1', '')
endfunction
function! Snippet_Modeline()
return s:start_comment() . " vim: set ${1:settings}:" . s:end_comment()
endfunction
function! Snippet_Camelcase(s)
"upcase the first letter
let toReturn = substitute(a:s, '^\(.\)', '\=toupper(submatch(1))', '')
"turn all '_x' into 'X'
return substitute(toReturn, '_\(.\)', '\=toupper(submatch(1))', 'g')
endfunction
function! Snippet_Underscore(s)
"down the first letter
let toReturn = substitute(a:s, '^\(.\)', '\=tolower(submatch(1))', '')
"turn all 'X' into '_x'
return substitute(toReturn, '\([A-Z]\)', '\=tolower("_".submatch(1))', 'g')
endfunction
" modeline {{{1
" vim: set fdm=marker: