utils 0.0.67 → 0.0.68

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/VERSION +1 -1
  2. data/bin/edit +3 -1
  3. data/lib/utils/editor.rb +14 -0
  4. data/lib/utils/version.rb +1 -1
  5. data/utils.gemspec +3 -3
  6. metadata +3 -74
  7. data/lib/utils/config/vim/after/syntax/haml.vim +0 -9
  8. data/lib/utils/config/vim/after/syntax/html.vim +0 -11
  9. data/lib/utils/config/vim/autoload/Align.vim +0 -1029
  10. data/lib/utils/config/vim/autoload/AlignMaps.vim +0 -330
  11. data/lib/utils/config/vim/autoload/ctrlp/bookmarkdir.vim +0 -139
  12. data/lib/utils/config/vim/autoload/ctrlp/buffertag.vim +0 -238
  13. data/lib/utils/config/vim/autoload/ctrlp/changes.vim +0 -96
  14. data/lib/utils/config/vim/autoload/ctrlp/dir.vim +0 -90
  15. data/lib/utils/config/vim/autoload/ctrlp/line.vim +0 -63
  16. data/lib/utils/config/vim/autoload/ctrlp/mixed.vim +0 -83
  17. data/lib/utils/config/vim/autoload/ctrlp/mrufiles.vim +0 -119
  18. data/lib/utils/config/vim/autoload/ctrlp/quickfix.vim +0 -62
  19. data/lib/utils/config/vim/autoload/ctrlp/rtscript.vim +0 -49
  20. data/lib/utils/config/vim/autoload/ctrlp/tag.vim +0 -112
  21. data/lib/utils/config/vim/autoload/ctrlp/undo.vim +0 -154
  22. data/lib/utils/config/vim/autoload/ctrlp/utils.vim +0 -72
  23. data/lib/utils/config/vim/autoload/ctrlp.vim +0 -1772
  24. data/lib/utils/config/vim/autoload/rails.vim +0 -4570
  25. data/lib/utils/config/vim/autoload/rubycomplete.vim +0 -801
  26. data/lib/utils/config/vim/autoload/sqlcomplete.vim +0 -741
  27. data/lib/utils/config/vim/autoload/vimball.vim +0 -750
  28. data/lib/utils/config/vim/colors/flori.vim +0 -116
  29. data/lib/utils/config/vim/compiler/coffee.vim +0 -68
  30. data/lib/utils/config/vim/compiler/eruby.vim +0 -40
  31. data/lib/utils/config/vim/compiler/ruby.vim +0 -67
  32. data/lib/utils/config/vim/compiler/rubyunit.vim +0 -34
  33. data/lib/utils/config/vim/doc/Decho.txt +0 -372
  34. data/lib/utils/config/vim/doc/coffee-script.txt +0 -116
  35. data/lib/utils/config/vim/doc/ctrlp.txt +0 -1113
  36. data/lib/utils/config/vim/doc/fugitive.txt +0 -257
  37. data/lib/utils/config/vim/doc/rails.txt +0 -1022
  38. data/lib/utils/config/vim/doc/xml-plugin.txt +0 -226
  39. data/lib/utils/config/vim/ftdetect/coffee.vim +0 -8
  40. data/lib/utils/config/vim/ftdetect/eco.vim +0 -1
  41. data/lib/utils/config/vim/ftdetect/ragel.vim +0 -2
  42. data/lib/utils/config/vim/ftdetect/ruby.vim +0 -17
  43. data/lib/utils/config/vim/ftdetect/slim.vim +0 -2
  44. data/lib/utils/config/vim/ftplugin/coffee.vim +0 -221
  45. data/lib/utils/config/vim/ftplugin/eruby.vim +0 -100
  46. data/lib/utils/config/vim/ftplugin/ruby.vim +0 -260
  47. data/lib/utils/config/vim/ftplugin/xml.vim +0 -941
  48. data/lib/utils/config/vim/indent/IndentAnything_html.vim +0 -35
  49. data/lib/utils/config/vim/indent/coffee.vim +0 -338
  50. data/lib/utils/config/vim/indent/eruby.vim +0 -77
  51. data/lib/utils/config/vim/indent/javascript.vim +0 -116
  52. data/lib/utils/config/vim/indent/ruby.vim +0 -377
  53. data/lib/utils/config/vim/indent/slim.vim +0 -75
  54. data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +0 -242
  55. data/lib/utils/config/vim/plugin/AlignPlugin.vim +0 -41
  56. data/lib/utils/config/vim/plugin/Decho.vim +0 -592
  57. data/lib/utils/config/vim/plugin/IndentAnything.vim +0 -675
  58. data/lib/utils/config/vim/plugin/bufexplorer.vim +0 -1144
  59. data/lib/utils/config/vim/plugin/cecutil.vim +0 -508
  60. data/lib/utils/config/vim/plugin/ctrlp.vim +0 -61
  61. data/lib/utils/config/vim/plugin/fugitive.vim +0 -2041
  62. data/lib/utils/config/vim/plugin/lusty-explorer.vim +0 -1509
  63. data/lib/utils/config/vim/plugin/rails.vim +0 -339
  64. data/lib/utils/config/vim/plugin/rubyextra.vim +0 -193
  65. data/lib/utils/config/vim/plugin/surround.vim +0 -628
  66. data/lib/utils/config/vim/plugin/taglist.vim +0 -4546
  67. data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +0 -131
  68. data/lib/utils/config/vim/plugin/vimballPlugin.vim +0 -40
  69. data/lib/utils/config/vim/syntax/Decho.vim +0 -101
  70. data/lib/utils/config/vim/syntax/coffee.vim +0 -217
  71. data/lib/utils/config/vim/syntax/eco.vim +0 -62
  72. data/lib/utils/config/vim/syntax/eruby.vim +0 -73
  73. data/lib/utils/config/vim/syntax/javascript.vim +0 -246
  74. data/lib/utils/config/vim/syntax/ragel.vim +0 -165
  75. data/lib/utils/config/vim/syntax/ruby.vim +0 -367
  76. data/lib/utils/config/vim/syntax/slim.vim +0 -117
  77. data/lib/utils/config/vimrc +0 -540
@@ -1,741 +0,0 @@
1
- " Vim OMNI completion script for SQL
2
- " Language: SQL
3
- " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
4
- " Version: 9.0
5
- " Last Change: 2010 May 13
6
- " Usage: For detailed help
7
- " ":help sql.txt"
8
- " or ":help ft-sql-omni"
9
- " or read $VIMRUNTIME/doc/sql.txt
10
-
11
- " History
12
- " Version 9.0
13
- " This change removes some of the support for tables with spaces in their
14
- " names in order to simplify the regexes used to pull out query table
15
- " aliases for more robust table name and column name code completion.
16
- " Full support for "table names with spaces" can be added in again
17
- " after 7.3.
18
- " Version 8.0
19
- " Incorrectly re-executed the g:ftplugin_sql_omni_key_right and g:ftplugin_sql_omni_key_left
20
- " when drilling in and out of a column list for a table.
21
- " Version 7.0
22
- " Better handling of object names
23
- " Version 6.0
24
- " Supports object names with spaces "my table name"
25
- "
26
- " Set completion with CTRL-X CTRL-O to autoloaded function.
27
- " This check is in place in case this script is
28
- " sourced directly instead of using the autoload feature.
29
- if exists('&omnifunc')
30
- " Do not set the option if already set since this
31
- " results in an E117 warning.
32
- if &omnifunc == ""
33
- setlocal omnifunc=sqlcomplete#Complete
34
- endif
35
- endif
36
-
37
- if exists('g:loaded_sql_completion')
38
- finish
39
- endif
40
- let g:loaded_sql_completion = 70
41
-
42
- " Maintains filename of dictionary
43
- let s:sql_file_table = ""
44
- let s:sql_file_procedure = ""
45
- let s:sql_file_view = ""
46
-
47
- " Define various arrays to be used for caching
48
- let s:tbl_name = []
49
- let s:tbl_alias = []
50
- let s:tbl_cols = []
51
- let s:syn_list = []
52
- let s:syn_value = []
53
-
54
- " Used in conjunction with the syntaxcomplete plugin
55
- let s:save_inc = ""
56
- let s:save_exc = ""
57
- if exists('g:omni_syntax_group_include_sql')
58
- let s:save_inc = g:omni_syntax_group_include_sql
59
- endif
60
- if exists('g:omni_syntax_group_exclude_sql')
61
- let s:save_exc = g:omni_syntax_group_exclude_sql
62
- endif
63
-
64
- " Used with the column list
65
- let s:save_prev_table = ""
66
-
67
- " Default the option to verify table alias
68
- if !exists('g:omni_sql_use_tbl_alias')
69
- let g:omni_sql_use_tbl_alias = 'a'
70
- endif
71
- " Default syntax items to precache
72
- if !exists('g:omni_sql_precache_syntax_groups')
73
- let g:omni_sql_precache_syntax_groups = [
74
- \ 'syntax',
75
- \ 'sqlKeyword',
76
- \ 'sqlFunction',
77
- \ 'sqlOption',
78
- \ 'sqlType',
79
- \ 'sqlStatement'
80
- \ ]
81
- endif
82
- " Set ignorecase to the ftplugin standard
83
- if !exists('g:omni_sql_ignorecase')
84
- let g:omni_sql_ignorecase = &ignorecase
85
- endif
86
- " During table completion, should the table list also
87
- " include the owner name
88
- if !exists('g:omni_sql_include_owner')
89
- let g:omni_sql_include_owner = 0
90
- if exists('g:loaded_dbext')
91
- if g:loaded_dbext >= 300
92
- " New to dbext 3.00, by default the table lists include the owner
93
- " name of the table. This is used when determining how much of
94
- " whatever has been typed should be replaced as part of the
95
- " code replacement.
96
- let g:omni_sql_include_owner = 1
97
- endif
98
- endif
99
- endif
100
-
101
- " This function is used for the 'omnifunc' option.
102
- function! sqlcomplete#Complete(findstart, base)
103
-
104
- " Default to table name completion
105
- let compl_type = 'table'
106
- " Allow maps to specify what type of object completion they want
107
- if exists('b:sql_compl_type')
108
- let compl_type = b:sql_compl_type
109
- endif
110
-
111
- " First pass through this function determines how much of the line should
112
- " be replaced by whatever is chosen from the completion list
113
- if a:findstart
114
- " Locate the start of the item, including "."
115
- let line = getline('.')
116
- let start = col('.') - 1
117
- let lastword = -1
118
- let begindot = 0
119
- " Check if the first character is a ".", for column completion
120
- if line[start - 1] == '.'
121
- let begindot = 1
122
- endif
123
- while start > 0
124
- " Additional code was required to handle objects which
125
- " can contain spaces like "my table name".
126
- if line[start - 1] !~ '\(\w\|\.\)'
127
- " If the previous character is not a period or word character
128
- break
129
- " elseif line[start - 1] =~ '\(\w\|\s\+\)'
130
- " let start -= 1
131
- elseif line[start - 1] =~ '\w'
132
- " If the previous character is word character continue back
133
- let start -= 1
134
- elseif line[start - 1] =~ '\.' &&
135
- \ compl_type =~ 'column\|table\|view\|procedure'
136
- " If the previous character is a period and we are completing
137
- " an object which can be specified with a period like this:
138
- " table_name.column_name
139
- " owner_name.table_name
140
-
141
- " If lastword has already been set for column completion
142
- " break from the loop, since we do not also want to pickup
143
- " a table name if it was also supplied.
144
- if lastword != -1 && compl_type == 'column'
145
- break
146
- endif
147
- " If column completion was specified stop at the "." if
148
- " a . was specified, otherwise, replace all the way up
149
- " to the owner name (if included).
150
- if lastword == -1 && compl_type == 'column' && begindot == 1
151
- let lastword = start
152
- endif
153
- " If omni_sql_include_owner = 0, do not include the table
154
- " name as part of the substitution, so break here
155
- if lastword == -1 &&
156
- \ compl_type =~ 'table\|view\|procedure\column_csv' &&
157
- \ g:omni_sql_include_owner == 0
158
- let lastword = start
159
- break
160
- endif
161
- let start -= 1
162
- else
163
- break
164
- endif
165
- endwhile
166
-
167
- " Return the column of the last word, which is going to be changed.
168
- " Remember the text that comes before it in s:prepended.
169
- if lastword == -1
170
- let s:prepended = ''
171
- return start
172
- endif
173
- let s:prepended = strpart(line, start, lastword - start)
174
- return lastword
175
- endif
176
-
177
- " Second pass through this function will determine what data to put inside
178
- " of the completion list
179
- " s:prepended is set by the first pass
180
- let base = s:prepended . a:base
181
-
182
- " Default the completion list to an empty list
183
- let compl_list = []
184
-
185
- " Default to table name completion
186
- let compl_type = 'table'
187
- " Allow maps to specify what type of object completion they want
188
- if exists('b:sql_compl_type')
189
- let compl_type = b:sql_compl_type
190
- unlet b:sql_compl_type
191
- endif
192
-
193
- if compl_type == 'tableReset'
194
- let compl_type = 'table'
195
- let base = ''
196
- endif
197
-
198
- if compl_type == 'table' ||
199
- \ compl_type == 'procedure' ||
200
- \ compl_type == 'view'
201
-
202
- " This type of completion relies upon the dbext.vim plugin
203
- if s:SQLCCheck4dbext() == -1
204
- return []
205
- endif
206
-
207
- " Allow the user to override the dbext plugin to specify whether
208
- " the owner/creator should be included in the list
209
- if g:loaded_dbext >= 300
210
- let saveSetting = DB_listOption('dict_show_owner')
211
- exec 'DBSetOption dict_show_owner='.(g:omni_sql_include_owner==1?'1':'0')
212
- endif
213
-
214
- let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '')
215
- " Same call below, no need to do it twice
216
- " if s:sql_file_{compl_type} == ""
217
- " let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
218
- " endif
219
- let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
220
- if s:sql_file_{compl_type} != ""
221
- if filereadable(s:sql_file_{compl_type})
222
- let compl_list = readfile(s:sql_file_{compl_type})
223
- endif
224
- endif
225
-
226
- if g:loaded_dbext > 300
227
- exec 'DBSetOption dict_show_owner='.saveSetting
228
- endif
229
- elseif compl_type =~? 'column'
230
-
231
- " This type of completion relies upon the dbext.vim plugin
232
- if s:SQLCCheck4dbext() == -1
233
- return []
234
- endif
235
-
236
- if base == ""
237
- " The last time we displayed a column list we stored
238
- " the table name. If the user selects a column list
239
- " without a table name of alias present, assume they want
240
- " the previous column list displayed.
241
- let base = s:save_prev_table
242
- endif
243
-
244
- let owner = ''
245
- let column = ''
246
-
247
- if base =~ '\.'
248
- " Check if the owner/creator has been specified
249
- let owner = matchstr( base, '^\zs.*\ze\..*\..*' )
250
- let table = matchstr( base, '^\(.*\.\)\?\zs.*\ze\..*' )
251
- let column = matchstr( base, '.*\.\zs.*' )
252
-
253
- " It is pretty well impossible to determine if the user
254
- " has entered:
255
- " owner.table
256
- " table.column_prefix
257
- " So there are a couple of things we can do to mitigate
258
- " this issue.
259
- " 1. Check if the dbext plugin has the option turned
260
- " on to even allow owners
261
- " 2. Based on 1, if the user is showing a table list
262
- " and the DrillIntoTable (using <Right>) then
263
- " this will be owner.table. In this case, we can
264
- " check to see the table.column exists in the
265
- " cached table list. If it does, then we have
266
- " determined the user has actually chosen
267
- " owner.table, not table.column_prefix.
268
- let found = -1
269
- if g:omni_sql_include_owner == 1 && owner == ''
270
- if filereadable(s:sql_file_table)
271
- let tbl_list = readfile(s:sql_file_table)
272
- let found = index( tbl_list, ((table != '')?(table.'.'):'').column)
273
- endif
274
- endif
275
- " If the table.column was found in the table list, we can safely assume
276
- " the owner was not provided and shift the items appropriately.
277
- " OR
278
- " If the user has indicated not to use table owners at all and
279
- " the base ends in a '.' we know they are not providing a column
280
- " name, so we can shift the items appropriately.
281
- if found != -1 || (g:omni_sql_include_owner == 0 && base !~ '\.$')
282
- let owner = table
283
- let table = column
284
- let column = ''
285
- endif
286
- else
287
- let table = base
288
- endif
289
-
290
- " Get anything after the . and consider this the table name
291
- " If an owner has been specified, then we must consider the
292
- " base to be a partial column name
293
- " let base = matchstr( base, '^\(.*\.\)\?\zs.*' )
294
-
295
- if table != ""
296
- let s:save_prev_table = base
297
- let list_type = ''
298
-
299
- if compl_type == 'column_csv'
300
- " Return one array element, with a comma separated
301
- " list of values instead of multiple array entries
302
- " for each column in the table.
303
- let list_type = 'csv'
304
- endif
305
-
306
- let compl_list = s:SQLCGetColumns(table, list_type)
307
- if column != ''
308
- " If no column prefix has been provided and the table
309
- " name was provided, append it to each of the items
310
- " returned.
311
- let compl_list = map(compl_list, "table.'.'.v:val")
312
- if owner != ''
313
- " If an owner has been provided append it to each of the
314
- " items returned.
315
- let compl_list = map(compl_list, "owner.'.'.v:val")
316
- endif
317
- else
318
- let base = ''
319
- endif
320
-
321
- if compl_type == 'column_csv'
322
- " Join the column array into 1 single element array
323
- " but make the columns column separated
324
- let compl_list = [join(compl_list, ', ')]
325
- endif
326
- endif
327
- elseif compl_type == 'resetCache'
328
- " Reset all cached items
329
- let s:tbl_name = []
330
- let s:tbl_alias = []
331
- let s:tbl_cols = []
332
- let s:syn_list = []
333
- let s:syn_value = []
334
-
335
- let msg = "All SQL cached items have been removed."
336
- call s:SQLCWarningMsg(msg)
337
- " Leave time for the user to read the error message
338
- :sleep 2
339
- else
340
- let compl_list = s:SQLCGetSyntaxList(compl_type)
341
- endif
342
-
343
- if base != ''
344
- " Filter the list based on the first few characters the user entered.
345
- " Check if the text matches at the beginning
346
- " or
347
- " Match to a owner.table or alias.column type match
348
- " or
349
- " Handle names with spaces "my table name"
350
- let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"'
351
- " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\)"'
352
- " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"'
353
- " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
354
- let compl_list = filter(deepcopy(compl_list), expr)
355
- endif
356
-
357
- if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != ""
358
- let &omnifunc = b:sql_compl_savefunc
359
- endif
360
-
361
- return compl_list
362
- endfunc
363
-
364
- function! sqlcomplete#PreCacheSyntax(...)
365
- let syn_group_arr = []
366
- if a:0 > 0
367
- let syn_group_arr = a:1
368
- else
369
- let syn_group_arr = g:omni_sql_precache_syntax_groups
370
- endif
371
- " For each group specified in the list, precache all
372
- " the sytnax items.
373
- if !empty(syn_group_arr)
374
- for group_name in syn_group_arr
375
- call s:SQLCGetSyntaxList(group_name)
376
- endfor
377
- endif
378
- endfunction
379
-
380
- function! sqlcomplete#Map(type)
381
- " Tell the SQL plugin what you want to complete
382
- let b:sql_compl_type=a:type
383
- " Record previous omnifunc, if the SQL completion
384
- " is being used in conjunction with other filetype
385
- " completion plugins
386
- if &omnifunc != "" && &omnifunc != 'sqlcomplete#Complete'
387
- " Record the previous omnifunc, the plugin
388
- " will automatically set this back so that it
389
- " does not interfere with other ftplugins settings
390
- let b:sql_compl_savefunc=&omnifunc
391
- endif
392
- " Set the OMNI func for the SQL completion plugin
393
- let &omnifunc='sqlcomplete#Complete'
394
- endfunction
395
-
396
- function! sqlcomplete#DrillIntoTable()
397
- " If the omni popup window is visible
398
- if pumvisible()
399
- call sqlcomplete#Map('column')
400
- " C-Y, makes the currently highlighted entry active
401
- " and trigger the omni popup to be redisplayed
402
- call feedkeys("\<C-Y>\<C-X>\<C-O>", 'n')
403
- else
404
- " If the popup is not visible, simple perform the normal
405
- " key behaviour.
406
- " Must use exec since they key must be preceeded by "\"
407
- " or feedkeys will simply push each character of the string
408
- " rather than the "key press".
409
- exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_right.'", "n")'
410
- endif
411
- return ""
412
- endfunction
413
-
414
- function! sqlcomplete#DrillOutOfColumns()
415
- " If the omni popup window is visible
416
- if pumvisible()
417
- call sqlcomplete#Map('tableReset')
418
- " Trigger the omni popup to be redisplayed
419
- call feedkeys("\<C-X>\<C-O>")
420
- else
421
- " If the popup is not visible, simple perform the normal
422
- " key behaviour.
423
- " Must use exec since they key must be preceeded by "\"
424
- " or feedkeys will simply push each character of the string
425
- " rather than the "key press".
426
- exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_left.'", "n")'
427
- endif
428
- return ""
429
- endfunction
430
-
431
- function! s:SQLCWarningMsg(msg)
432
- echohl WarningMsg
433
- echomsg a:msg
434
- echohl None
435
- endfunction
436
-
437
- function! s:SQLCErrorMsg(msg)
438
- echohl ErrorMsg
439
- echomsg a:msg
440
- echohl None
441
- endfunction
442
-
443
- function! s:SQLCGetSyntaxList(syn_group)
444
- let syn_group = a:syn_group
445
- let compl_list = []
446
-
447
- " Check if we have already cached the syntax list
448
- let list_idx = index(s:syn_list, syn_group, 0, &ignorecase)
449
- if list_idx > -1
450
- " Return previously cached value
451
- let compl_list = s:syn_value[list_idx]
452
- else
453
- " Request the syntax list items from the
454
- " syntax completion plugin
455
- if syn_group == 'syntax'
456
- " Handle this special case. This allows the user
457
- " to indicate they want all the syntax items available,
458
- " so do not specify a specific include list.
459
- let g:omni_syntax_group_include_sql = ''
460
- else
461
- " The user has specified a specific syntax group
462
- let g:omni_syntax_group_include_sql = syn_group
463
- endif
464
- let g:omni_syntax_group_exclude_sql = ''
465
- let syn_value = OmniSyntaxList()
466
- let g:omni_syntax_group_include_sql = s:save_inc
467
- let g:omni_syntax_group_exclude_sql = s:save_exc
468
- " Cache these values for later use
469
- let s:syn_list = add( s:syn_list, syn_group )
470
- let s:syn_value = add( s:syn_value, syn_value )
471
- let compl_list = syn_value
472
- endif
473
-
474
- return compl_list
475
- endfunction
476
-
477
- function! s:SQLCCheck4dbext()
478
- if !exists('g:loaded_dbext')
479
- let msg = "The dbext plugin must be loaded for dynamic SQL completion"
480
- call s:SQLCErrorMsg(msg)
481
- " Leave time for the user to read the error message
482
- :sleep 2
483
- return -1
484
- elseif g:loaded_dbext < 600
485
- let msg = "The dbext plugin must be at least version 5.30 " .
486
- \ " for dynamic SQL completion"
487
- call s:SQLCErrorMsg(msg)
488
- " Leave time for the user to read the error message
489
- :sleep 2
490
- return -1
491
- endif
492
- return 1
493
- endfunction
494
-
495
- function! s:SQLCAddAlias(table_name, table_alias, cols)
496
- " Strip off the owner if included
497
- let table_name = matchstr(a:table_name, '\%(.\{-}\.\)\?\zs\(.*\)' )
498
- let table_alias = a:table_alias
499
- let cols = a:cols
500
-
501
- if g:omni_sql_use_tbl_alias != 'n'
502
- if table_alias == ''
503
- if 'da' =~? g:omni_sql_use_tbl_alias
504
- if table_name =~ '_'
505
- " Treat _ as separators since people often use these
506
- " for word separators
507
- let save_keyword = &iskeyword
508
- setlocal iskeyword-=_
509
-
510
- " Get the first letter of each word
511
- " [[:alpha:]] is used instead of \w
512
- " to catch extended accented characters
513
- "
514
- let table_alias = substitute(
515
- \ table_name,
516
- \ '\<[[:alpha:]]\+\>_\?',
517
- \ '\=strpart(submatch(0), 0, 1)',
518
- \ 'g'
519
- \ )
520
- " Restore original value
521
- let &iskeyword = save_keyword
522
- elseif table_name =~ '\u\U'
523
- let table_alias = substitute(
524
- \ table_name, '\(\u\)\U*', '\1', 'g')
525
- else
526
- let table_alias = strpart(table_name, 0, 1)
527
- endif
528
- endif
529
- endif
530
- if table_alias != ''
531
- " Following a word character, make sure there is a . and no spaces
532
- let table_alias = substitute(table_alias, '\w\zs\.\?\s*$', '.', '')
533
- if 'a' =~? g:omni_sql_use_tbl_alias && a:table_alias == ''
534
- let table_alias = inputdialog("Enter table alias:", table_alias)
535
- endif
536
- endif
537
- if table_alias != ''
538
- let cols = substitute(cols, '\<\w', table_alias.'&', 'g')
539
- endif
540
- endif
541
-
542
- return cols
543
- endfunction
544
-
545
- function! s:SQLCGetObjectOwner(object)
546
- " The owner regex matches a word at the start of the string which is
547
- " followed by a dot, but doesn't include the dot in the result.
548
- " ^ - from beginning of line
549
- " \("\|\[\)\? - ignore any quotes
550
- " \zs - start the match now
551
- " .\{-} - get owner name
552
- " \ze - end the match
553
- " \("\|\[\)\? - ignore any quotes
554
- " \. - must by followed by a .
555
- " let owner = matchstr( a:object, '^\s*\zs.*\ze\.' )
556
- let owner = matchstr( a:object, '^\("\|\[\)\?\zs\.\{-}\ze\("\|\]\)\?\.' )
557
- return owner
558
- endfunction
559
-
560
- function! s:SQLCGetColumns(table_name, list_type)
561
- " Check if the table name was provided as part of the column name
562
- let table_name = matchstr(a:table_name, '^["\[\]a-zA-Z0-9_ ]\+\ze\.\?')
563
- let table_cols = []
564
- let table_alias = ''
565
- let move_to_top = 1
566
-
567
- let table_name = substitute(table_name, '\s*\(.\{-}\)\s*$', '\1', 'g')
568
-
569
- " If the table name was given as:
570
- " where c.
571
- let table_name = substitute(table_name, '^\c\(WHERE\|AND\|OR\)\s\+', '', '')
572
- if g:loaded_dbext >= 300
573
- let saveSettingAlias = DB_listOption('use_tbl_alias')
574
- exec 'DBSetOption use_tbl_alias=n'
575
- endif
576
-
577
- let table_name_stripped = substitute(table_name, '["\[\]]*', '', 'g')
578
-
579
- " Check if we have already cached the column list for this table
580
- " by its name
581
- let list_idx = index(s:tbl_name, table_name_stripped, 0, &ignorecase)
582
- if list_idx > -1
583
- let table_cols = split(s:tbl_cols[list_idx], '\n')
584
- else
585
- " Check if we have already cached the column list for this table
586
- " by its alias, assuming the table_name provided was actually
587
- " the alias for the table instead
588
- " select *
589
- " from area a
590
- " where a.
591
- let list_idx = index(s:tbl_alias, table_name_stripped, 0, &ignorecase)
592
- if list_idx > -1
593
- let table_alias = table_name_stripped
594
- let table_name = s:tbl_name[list_idx]
595
- let table_cols = split(s:tbl_cols[list_idx], '\n')
596
- endif
597
- endif
598
-
599
- " If we have not found a cached copy of the table
600
- " And the table ends in a "." or we are looking for a column list
601
- " if list_idx == -1 && (a:table_name =~ '\.' || b:sql_compl_type =~ 'column')
602
- " if list_idx == -1 && (a:table_name =~ '\.' || a:list_type =~ 'csv')
603
- if list_idx == -1
604
- let saveY = @y
605
- let saveSearch = @/
606
- let saveWScan = &wrapscan
607
- let curline = line(".")
608
- let curcol = col(".")
609
-
610
- " Do not let searchs wrap
611
- setlocal nowrapscan
612
- " If . was entered, look at the word just before the .
613
- " We are looking for something like this:
614
- " select *
615
- " from customer c
616
- " where c.
617
- " So when . is pressed, we need to find 'c'
618
- "
619
-
620
- " Search backwards to the beginning of the statement
621
- " and do NOT wrap
622
- " exec 'silent! normal! v?\<\(select\|update\|delete\|;\)\>'."\n".'"yy'
623
- exec 'silent! normal! ?\<\c\(select\|update\|delete\|;\)\>'."\n"
624
-
625
- " Start characterwise visual mode
626
- " Advance right one character
627
- " Search foward until one of the following:
628
- " 1. Another select/update/delete statement
629
- " 2. A ; at the end of a line (the delimiter)
630
- " 3. The end of the file (incase no delimiter)
631
- " Yank the visually selected text into the "y register.
632
- exec 'silent! normal! vl/\c\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
633
-
634
- let query = @y
635
- let query = substitute(query, "\n", ' ', 'g')
636
- let found = 0
637
-
638
- " if query =~? '^\c\(select\)'
639
- if query =~? '^\(select\|update\|delete\)'
640
- let found = 1
641
- " \(\(\<\w\+\>\)\.\)\? -
642
- " '\c\(from\|join\|,\).\{-}' - Starting at the from clause (case insensitive)
643
- " '\zs\(\(\<\w\+\>\)\.\)\?' - Get the owner name (optional)
644
- " '\<\w\+\>\ze' - Get the table name
645
- " '\s\+\<'.table_name.'\>' - Followed by the alias
646
- " '\s*\.\@!.*' - Cannot be followed by a .
647
- " '\(\<where\>\|$\)' - Must be followed by a WHERE clause
648
- " '.*' - Exclude the rest of the line in the match
649
- " let table_name_new = matchstr(@y,
650
- " \ '\c\(from\|join\|,\).\{-}'.
651
- " \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
652
- " \ '\("\|\[\)\?.\{-}\("\|\]\)\?\ze'.
653
- " \ '\s\+\%(as\s\+\)\?\<'.
654
- " \ matchstr(table_name, '.\{-}\ze\.\?$').
655
- " \ '\>'.
656
- " \ '\s*\.\@!.*'.
657
- " \ '\(\<where\>\|$\)'.
658
- " \ '.*'
659
- " \ )
660
- let table_name_new = matchstr(@y,
661
- \ '\c\(\<from\>\|\<join\>\|,\)\s*'.
662
- \ '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?'.
663
- \ '\("\|\[\)\?\w\+\("\|\]\)\?\ze'.
664
- \ '\s\+\%(as\s\+\)\?\<'.
665
- \ matchstr(table_name, '.\{-}\ze\.\?$').
666
- \ '\>'.
667
- \ '\s*\.\@!.*'.
668
- \ '\(\<where\>\|$\)'.
669
- \ '.*'
670
- \ )
671
-
672
- if table_name_new != ''
673
- let table_alias = table_name
674
- let table_name = matchstr( table_name_new, '^\(.*\.\)\?\zs.*\ze' )
675
-
676
- let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
677
- if list_idx > -1
678
- let table_cols = split(s:tbl_cols[list_idx])
679
- let s:tbl_name[list_idx] = table_name
680
- let s:tbl_alias[list_idx] = table_alias
681
- else
682
- let list_idx = index(s:tbl_alias, table_name, 0, &ignorecase)
683
- if list_idx > -1
684
- let table_cols = split(s:tbl_cols[list_idx])
685
- let s:tbl_name[list_idx] = table_name
686
- let s:tbl_alias[list_idx] = table_alias
687
- endif
688
- endif
689
-
690
- endif
691
- else
692
- " Simply assume it is a table name provided with a . on the end
693
- let found = 1
694
- endif
695
-
696
- let @y = saveY
697
- let @/ = saveSearch
698
- let &wrapscan = saveWScan
699
-
700
- " Return to previous location
701
- call cursor(curline, curcol)
702
-
703
- if found == 0
704
- if g:loaded_dbext > 300
705
- exec 'DBSetOption use_tbl_alias='.saveSettingAlias
706
- endif
707
-
708
- " Not a SQL statement, do not display a list
709
- return []
710
- endif
711
- endif
712
-
713
- if empty(table_cols)
714
- " Specify silent mode, no messages to the user (tbl, 1)
715
- " Specify do not comma separate (tbl, 1, 1)
716
- let table_cols_str = DB_getListColumn(table_name, 1, 1)
717
-
718
- if table_cols_str != ""
719
- let s:tbl_name = add( s:tbl_name, table_name )
720
- let s:tbl_alias = add( s:tbl_alias, table_alias )
721
- let s:tbl_cols = add( s:tbl_cols, table_cols_str )
722
- let table_cols = split(table_cols_str, '\n')
723
- endif
724
-
725
- endif
726
-
727
- if g:loaded_dbext > 300
728
- exec 'DBSetOption use_tbl_alias='.saveSettingAlias
729
- endif
730
-
731
- " If the user has asked for a comma separate list of column
732
- " values, ask the user if they want to prepend each column
733
- " with a tablename alias.
734
- if a:list_type == 'csv' && !empty(table_cols)
735
- let cols = join(table_cols, ', ')
736
- let cols = s:SQLCAddAlias(table_name, table_alias, cols)
737
- let table_cols = [cols]
738
- endif
739
-
740
- return table_cols
741
- endfunction