utils 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. data/Rakefile +68 -0
  2. data/VERSION +1 -0
  3. data/bin/chroot-exec +12 -0
  4. data/bin/chroot-libs +18 -0
  5. data/bin/classify +37 -0
  6. data/bin/discover +137 -0
  7. data/bin/edit +74 -0
  8. data/bin/errf +32 -0
  9. data/bin/git-empty +8 -0
  10. data/bin/myex +90 -0
  11. data/bin/number_files +26 -0
  12. data/bin/same_files +37 -0
  13. data/bin/search +205 -0
  14. data/bin/sedit +3 -0
  15. data/bin/sshscreen +68 -0
  16. data/bin/term +21 -0
  17. data/bin/unquarantine_apps +8 -0
  18. data/bin/untest +17 -0
  19. data/bin/utils-install-config +10 -0
  20. data/bin/vacuum_firefox_sqlite +22 -0
  21. data/bin/xmp +74 -0
  22. data/lib/utils.rb +8 -0
  23. data/lib/utils/config.rb +23 -0
  24. data/lib/utils/config/gdb/asm +179 -0
  25. data/lib/utils/config/gdb/ruby +528 -0
  26. data/lib/utils/config/gdbinit +8 -0
  27. data/lib/utils/config/irbrc +455 -0
  28. data/lib/utils/config/rdebugrc +2 -0
  29. data/lib/utils/config/screenrc +143 -0
  30. data/lib/utils/config/vim/autoload/Align.vim +1029 -0
  31. data/lib/utils/config/vim/autoload/AlignMaps.vim +330 -0
  32. data/lib/utils/config/vim/autoload/rails.vim +4744 -0
  33. data/lib/utils/config/vim/autoload/rubycomplete.vim +801 -0
  34. data/lib/utils/config/vim/autoload/sqlcomplete.vim +741 -0
  35. data/lib/utils/config/vim/autoload/vimball.vim +750 -0
  36. data/lib/utils/config/vim/colors/flori.vim +113 -0
  37. data/lib/utils/config/vim/compiler/eruby.vim +40 -0
  38. data/lib/utils/config/vim/compiler/ruby.vim +67 -0
  39. data/lib/utils/config/vim/compiler/rubyunit.vim +34 -0
  40. data/lib/utils/config/vim/ftdetect/ragel.vim +2 -0
  41. data/lib/utils/config/vim/ftdetect/ruby.vim +17 -0
  42. data/lib/utils/config/vim/ftplugin/eruby.vim +100 -0
  43. data/lib/utils/config/vim/ftplugin/ruby.vim +260 -0
  44. data/lib/utils/config/vim/ftplugin/xml.vim +941 -0
  45. data/lib/utils/config/vim/indent/IndentAnything_html.vim +35 -0
  46. data/lib/utils/config/vim/indent/eruby.vim +77 -0
  47. data/lib/utils/config/vim/indent/javascript.vim +116 -0
  48. data/lib/utils/config/vim/indent/ruby.vim +377 -0
  49. data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +242 -0
  50. data/lib/utils/config/vim/plugin/AlignPlugin.vim +41 -0
  51. data/lib/utils/config/vim/plugin/Decho.vim +592 -0
  52. data/lib/utils/config/vim/plugin/IndentAnything.vim +675 -0
  53. data/lib/utils/config/vim/plugin/bufexplorer.vim +1144 -0
  54. data/lib/utils/config/vim/plugin/cecutil.vim +482 -0
  55. data/lib/utils/config/vim/plugin/fugitive.vim +1703 -0
  56. data/lib/utils/config/vim/plugin/lusty-explorer.vim +1509 -0
  57. data/lib/utils/config/vim/plugin/rails.vim +340 -0
  58. data/lib/utils/config/vim/plugin/rubyextra.vim +193 -0
  59. data/lib/utils/config/vim/plugin/surround.vim +628 -0
  60. data/lib/utils/config/vim/plugin/taglist.vim +4546 -0
  61. data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +131 -0
  62. data/lib/utils/config/vim/plugin/vimballPlugin.vim +40 -0
  63. data/lib/utils/config/vim/syntax/Decho.vim +101 -0
  64. data/lib/utils/config/vim/syntax/eruby.vim +73 -0
  65. data/lib/utils/config/vim/syntax/javascript.vim +246 -0
  66. data/lib/utils/config/vim/syntax/ragel.vim +165 -0
  67. data/lib/utils/config/vim/syntax/ruby.vim +367 -0
  68. data/lib/utils/config/vimrc +461 -0
  69. data/lib/utils/file.rb +49 -0
  70. data/lib/utils/find.rb +54 -0
  71. data/lib/utils/md5.rb +23 -0
  72. data/lib/utils/patterns.rb +34 -0
  73. data/lib/utils/version.rb +8 -0
  74. data/utils.gemspec +33 -0
  75. metadata +183 -0
@@ -0,0 +1,113 @@
1
+ " Vim color file based on desert.vim
2
+
3
+ " cool help screens
4
+ " :he group-name
5
+ " :he highlight-groups
6
+
7
+ if has("gui_running")
8
+ set background=dark
9
+ endif
10
+ if exists("syntax_on")
11
+ syntax reset
12
+ endif
13
+ if version > 580
14
+ " no gearantees for version 5.8 and below, but this makes it stop
15
+ " complaining
16
+ hi clear
17
+ if exists("syntax_on")
18
+ syntax reset
19
+ endif
20
+ endif
21
+ let g:colors_name="flori"
22
+
23
+ " general highlight groups
24
+ hi Normal guifg=lightyellow guibg=grey20
25
+ hi Cursor guibg=khaki guifg=slategrey
26
+ hi CursorIM guibg=khaki guifg=slategrey
27
+ hi CursorColumn guibg=grey25
28
+ hi CursorLine guibg=grey25
29
+ hi Folded guibg=grey30 guifg=gold
30
+ hi FoldColumn guibg=grey30 guifg=tan
31
+ hi IncSearch guifg=slategrey guibg=khaki
32
+ hi ModeMsg guifg=goldenrod
33
+ hi MoreMsg guifg=seagreen
34
+ hi NonText guifg=lightblue guibg=grey30
35
+ hi Question guifg=springgreen
36
+ hi Search guibg=peru guifg=white
37
+ hi SpecialKey guifg=yellowgreen
38
+ hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
39
+ hi StatusLine guibg=#c2bfa5 guifg=black gui=none
40
+ hi StatusLineNC guibg=#c2bfa5 guifg=grey40 gui=none
41
+ hi Title guifg=indianred
42
+ hi Visual guifg=NONE guibg=peru
43
+ hi VisualNOS guifg=NONE guibg=grey25 gui=none
44
+ hi WarningMsg guifg=salmon guibg=NONE
45
+ hi LineNr guifg=slategrey guibg=NONE
46
+ hi Pmenu guifg=grey40 guibg=#c2bfa5 gui=NONE
47
+ hi PmenuSel guifg=white guibg=grey40 gui=NONE
48
+ hi PmenuSbar guifg=black guibg=grey30
49
+ hi PmenuThumb guifg=black guibg=white
50
+
51
+ " syntax highlighting groups
52
+ hi Comment guifg=slategrey guibg=NONE
53
+ "
54
+ hi Constant guifg=lightgreen guibg=NONE
55
+ hi String guifg=salmon guibg=NONE
56
+ hi Character guifg=greenyellow guibg=NONE
57
+ hi Number guifg=red guibg=NONE
58
+ hi Boolean guifg=red guibg=NONE
59
+ hi link Float Number
60
+ hi Regexp guifg=tomato guibg=NONE
61
+ "
62
+ hi Identifier guifg=palegreen guibg=NONE
63
+ hi Function guifg=limegreen guibg=NONE
64
+ "
65
+ hi Statement guifg=khaki guibg=NONE
66
+ hi Keyword guifg=brown gui=bold guibg=NONE
67
+ hi Operator guifg=orangered guibg=NONE
68
+ "
69
+ hi PreProc guifg=indianred guibg=NONE
70
+ "
71
+ hi Type guifg=darkkhaki guibg=NONE
72
+ "
73
+ hi Special guifg=orange guibg=NONE
74
+ "
75
+ hi Underlined guifg=darkslateblue gui=underline guibg=NONE
76
+ "
77
+ hi Ignore guifg=grey40 guibg=NONE
78
+ "
79
+ hi Error guifg=yellow guibg=orangered
80
+ "
81
+ hi Todo guifg=orangered guibg=yellow
82
+ "
83
+
84
+ hi rubyInterpolation guifg=moccasin guibg=NONE
85
+ hi rubyInstanceVariable guifg=orangered guibg=NONE
86
+ hi rubyClassVariable guifg=#dc1436 guibg=NONE
87
+ hi rubyGlobalVariable guifg=deeppink guibg=NONE
88
+ hi rubyEval guifg=red guibg=NONE
89
+ hi rubyBlockParameter guifg=orchid guibg=NONE
90
+ hi rubyBlockArgument guifg=orchid guibg=NONE
91
+ hi link rubyEscape Character
92
+ hi link rubySymbol Function
93
+ hi link rubyPseudoVariable Special
94
+ hi link rubyBoolean Boolean
95
+ hi link rubyPredefinedVariable Special
96
+ hi link rubyPredefinedConstant Constant
97
+ hi link rubyConstant Constant
98
+ hi link railsMethod PreProc
99
+ hi link rubyDefine Keyword
100
+ hi link rubyAccess rubyMethod
101
+ hi link rubyAttribute rubyMethod
102
+ hi link rubyException rubyMethod
103
+ hi link rubyInclude Keyword
104
+ hi link rubyStringDelimiter rubyString
105
+ hi link rubyRegexp Regexp
106
+ hi link rubyRegexpDelimiter rubyRegexp
107
+ hi link javascriptRegexpString Regexp
108
+ hi link javascriptNumber Number
109
+ hi link javascriptNull Constant
110
+ hi DiffAdd guibg=green guifg=white
111
+ hi DiffChange guibg=blue guifg=white
112
+ hi DiffText guifg=yellow
113
+ hi DiffDelete guibg=red guifg=white
@@ -0,0 +1,40 @@
1
+ " Vim compiler file
2
+ " Language: eRuby
3
+ " Maintainer: Doug Kearns <dougkearns@gmail.com>
4
+ " URL: http://vim-ruby.rubyforge.org
5
+ " Anon CVS: See above site
6
+ " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
7
+
8
+ if exists("current_compiler")
9
+ finish
10
+ endif
11
+ let current_compiler = "eruby"
12
+
13
+ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
14
+ command -nargs=* CompilerSet setlocal <args>
15
+ endif
16
+
17
+ let s:cpo_save = &cpo
18
+ set cpo-=C
19
+
20
+ if exists("eruby_compiler") && eruby_compiler == "eruby"
21
+ CompilerSet makeprg=eruby
22
+ else
23
+ CompilerSet makeprg=erb
24
+ endif
25
+
26
+ CompilerSet errorformat=
27
+ \eruby:\ %f:%l:%m,
28
+ \%+E%f:%l:\ parse\ error,
29
+ \%W%f:%l:\ warning:\ %m,
30
+ \%E%f:%l:in\ %*[^:]:\ %m,
31
+ \%E%f:%l:\ %m,
32
+ \%-C%\tfrom\ %f:%l:in\ %.%#,
33
+ \%-Z%\tfrom\ %f:%l,
34
+ \%-Z%p^,
35
+ \%-G%.%#
36
+
37
+ let &cpo = s:cpo_save
38
+ unlet s:cpo_save
39
+
40
+ " vim: nowrap sw=2 sts=2 ts=8:
@@ -0,0 +1,67 @@
1
+ " Vim compiler file
2
+ " Language: Ruby
3
+ " Function: Syntax check and/or error reporting
4
+ " Maintainer: Tim Hammerquist <timh at rubyforge.org>
5
+ " URL: http://vim-ruby.rubyforge.org
6
+ " Anon CVS: See above site
7
+ " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
8
+ " ----------------------------------------------------------------------------
9
+ "
10
+ " Changelog:
11
+ " 0.2: script saves and restores 'cpoptions' value to prevent problems with
12
+ " line continuations
13
+ " 0.1: initial release
14
+ "
15
+ " Contributors:
16
+ " Hugh Sasse <hgs@dmu.ac.uk>
17
+ " Doug Kearns <djkea2@gus.gscit.monash.edu.au>
18
+ "
19
+ " Todo:
20
+ " match error type %m
21
+ "
22
+ " Comments:
23
+ " I know this file isn't perfect. If you have any questions, suggestions,
24
+ " patches, etc., please don't hesitate to let me know.
25
+ "
26
+ " This is my first experience with 'errorformat' and compiler plugins and
27
+ " I welcome any input from more experienced (or clearer-thinking)
28
+ " individuals.
29
+ " ----------------------------------------------------------------------------
30
+
31
+ if exists("current_compiler")
32
+ finish
33
+ endif
34
+ let current_compiler = "ruby"
35
+
36
+ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
37
+ command -nargs=* CompilerSet setlocal <args>
38
+ endif
39
+
40
+ let s:cpo_save = &cpo
41
+ set cpo-=C
42
+
43
+ " default settings runs script normally
44
+ " add '-c' switch to run syntax check only:
45
+ "
46
+ " CompilerSet makeprg=ruby\ -wc\ $*
47
+ "
48
+ " or add '-c' at :make command line:
49
+ "
50
+ " :make -c %<CR>
51
+ "
52
+ CompilerSet makeprg=ruby\ -w\ $*
53
+
54
+ CompilerSet errorformat=
55
+ \%+E%f:%l:\ parse\ error,
56
+ \%W%f:%l:\ warning:\ %m,
57
+ \%E%f:%l:in\ %*[^:]:\ %m,
58
+ \%E%f:%l:\ %m,
59
+ \%-C%\tfrom\ %f:%l:in\ %.%#,
60
+ \%-Z%\tfrom\ %f:%l,
61
+ \%-Z%p^,
62
+ \%-G%.%#
63
+
64
+ let &cpo = s:cpo_save
65
+ unlet s:cpo_save
66
+
67
+ " vim: nowrap sw=2 sts=2 ts=8:
@@ -0,0 +1,34 @@
1
+ " Vim compiler file
2
+ " Language: Test::Unit - Ruby Unit Testing Framework
3
+ " Maintainer: Doug Kearns <dougkearns@gmail.com>
4
+ " URL: http://vim-ruby.rubyforge.org
5
+ " Anon CVS: See above site
6
+ " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
7
+
8
+ "if exists("current_compiler")
9
+ " finish
10
+ "endif
11
+ "let current_compiler = "rubyunit"
12
+ "
13
+ "if exists(":CompilerSet") != 2 " older Vim always used :setlocal
14
+ " command -nargs=* CompilerSet setlocal <args>
15
+ "endif
16
+ "
17
+ "let s:cpo_save = &cpo
18
+ "set cpo-=C
19
+ "
20
+ "CompilerSet makeprg=testrb
21
+ "
22
+ "CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
23
+ " \%C%m\ [%f:%l]:,
24
+ " \%E\ %\\+%\\d%\\+)\ Error:,
25
+ " \%C%m:,
26
+ " \%C\ \ \ \ %f:%l:%.%#,
27
+ " \%C%m,
28
+ " \%Z\ %#,
29
+ " \%-G%.%#
30
+ "
31
+ "let &cpo = s:cpo_save
32
+ "unlet s:cpo_save
33
+
34
+ " vim: nowrap sw=2 sts=2 ts=8:
@@ -0,0 +1,2 @@
1
+ " Ragel
2
+ au BufNewFile,BufRead *.rl set filetype=ragel
@@ -0,0 +1,17 @@
1
+ " Ruby
2
+ au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec set filetype=ruby
3
+
4
+ " Ruby on Rails
5
+ au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
6
+
7
+ " Rakefile
8
+ au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
9
+
10
+ " Rantfile
11
+ au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
12
+
13
+ " IRB config
14
+ au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
15
+
16
+ " eRuby
17
+ au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
@@ -0,0 +1,100 @@
1
+ " Vim filetype plugin
2
+ " Language: eRuby
3
+ " Maintainer: Tim Pope <vimNOSPAM@tpope.info>
4
+ " URL: http://vim-ruby.rubyforge.org
5
+ " Anon CVS: See above site
6
+ " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
7
+
8
+ " Only do this when not done yet for this buffer
9
+ if exists("b:did_ftplugin")
10
+ finish
11
+ endif
12
+
13
+ let s:save_cpo = &cpo
14
+ set cpo-=C
15
+
16
+ " Define some defaults in case the included ftplugins don't set them.
17
+ let s:undo_ftplugin = ""
18
+ let s:browsefilter = "All Files (*.*)\t*.*\n"
19
+ let s:match_words = ""
20
+
21
+ if !exists("g:eruby_default_subtype")
22
+ let g:eruby_default_subtype = "html"
23
+ endif
24
+
25
+ if !exists("b:eruby_subtype")
26
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
27
+ let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
28
+ if b:eruby_subtype == ''
29
+ let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\)\+$','',''),'\.\zs\w\+$')
30
+ endif
31
+ if b:eruby_subtype == 'rhtml'
32
+ let b:eruby_subtype = 'html'
33
+ elseif b:eruby_subtype == 'rb'
34
+ let b:eruby_subtype = 'ruby'
35
+ elseif b:eruby_subtype == 'yml'
36
+ let b:eruby_subtype = 'yaml'
37
+ elseif b:eruby_subtype == 'js'
38
+ let b:eruby_subtype = 'javascript'
39
+ elseif b:eruby_subtype == 'txt'
40
+ " Conventional; not a real file type
41
+ let b:eruby_subtype = 'text'
42
+ elseif b:eruby_subtype == ''
43
+ let b:eruby_subtype = g:eruby_default_subtype
44
+ endif
45
+ endif
46
+
47
+ if exists("b:eruby_subtype") && b:eruby_subtype != ''
48
+ exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim"
49
+ else
50
+ runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
51
+ endif
52
+ unlet! b:did_ftplugin
53
+
54
+ " Override our defaults if these were set by an included ftplugin.
55
+ if exists("b:undo_ftplugin")
56
+ let s:undo_ftplugin = b:undo_ftplugin
57
+ unlet b:undo_ftplugin
58
+ endif
59
+ if exists("b:browsefilter")
60
+ let s:browsefilter = b:browsefilter
61
+ unlet b:browsefilter
62
+ endif
63
+ if exists("b:match_words")
64
+ let s:match_words = b:match_words
65
+ unlet b:match_words
66
+ endif
67
+
68
+ runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
69
+ let b:did_ftplugin = 1
70
+
71
+ " Combine the new set of values with those previously included.
72
+ if exists("b:undo_ftplugin")
73
+ let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
74
+ endif
75
+ if exists ("b:browsefilter")
76
+ let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
77
+ endif
78
+ if exists("b:match_words")
79
+ let s:match_words = b:match_words . ',' . s:match_words
80
+ endif
81
+
82
+ " Change the browse dialog on Win32 to show mainly eRuby-related files
83
+ if has("gui_win32")
84
+ let b:browsefilter="eRuby Files (*.erb, *.rhtml)\t*.erb;*.rhtml\n" . s:browsefilter
85
+ endif
86
+
87
+ " Load the combined list of match_words for matchit.vim
88
+ if exists("loaded_matchit")
89
+ let b:match_words = s:match_words
90
+ endif
91
+
92
+ " TODO: comments=
93
+ setlocal commentstring=<%#%s%>
94
+
95
+ let b:undo_ftplugin = "setl cms< "
96
+ \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
97
+
98
+ let &cpo = s:save_cpo
99
+
100
+ " vim: nowrap sw=2 sts=2 ts=8:
@@ -0,0 +1,260 @@
1
+ " Vim filetype plugin
2
+ " Language: Ruby
3
+ " Maintainer: Gavin Sinclair <gsinclair at gmail.com>
4
+ " URL: http://vim-ruby.rubyforge.org
5
+ " Anon CVS: See above site
6
+ " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
7
+ " ----------------------------------------------------------------------------
8
+ "
9
+ " Original matchit support thanks to Ned Konz. See his ftplugin/ruby.vim at
10
+ " http://bike-nomad.com/vim/ruby.vim.
11
+ " ----------------------------------------------------------------------------
12
+
13
+ " Only do this when not done yet for this buffer
14
+ if (exists("b:did_ftplugin"))
15
+ finish
16
+ endif
17
+ let b:did_ftplugin = 1
18
+
19
+ let s:cpo_save = &cpo
20
+ set cpo&vim
21
+
22
+ if has("gui_running") && !has("gui_win32")
23
+ setlocal keywordprg=ri\ -T
24
+ else
25
+ setlocal keywordprg=ri
26
+ endif
27
+
28
+ " Matchit support
29
+ if exists("loaded_matchit") && !exists("b:match_words")
30
+ let b:match_ignorecase = 0
31
+
32
+ let b:match_words =
33
+ \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' .
34
+ \ ':' .
35
+ \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
36
+ \ ':' .
37
+ \ '\<end\>' .
38
+ \ ',{:},\[:\],(:)'
39
+
40
+ let b:match_skip =
41
+ \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
42
+ \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
43
+ \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
44
+ \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
45
+ \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
46
+ \ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
47
+ endif
48
+
49
+ setlocal formatoptions-=t formatoptions+=croql
50
+
51
+ setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\>
52
+ setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
53
+ setlocal suffixesadd=.rb
54
+
55
+ if exists("&ofu") && has("ruby")
56
+ setlocal omnifunc=rubycomplete#Complete
57
+ endif
58
+
59
+ " To activate, :set ballooneval
60
+ if has('balloon_eval') && exists('+balloonexpr')
61
+ setlocal balloonexpr=RubyBalloonexpr()
62
+ endif
63
+
64
+
65
+ " TODO:
66
+ "setlocal define=^\\s*def
67
+
68
+ setlocal comments=:#
69
+ setlocal commentstring=#\ %s
70
+
71
+ if !exists("s:rubypath")
72
+ if has("ruby") && has("win32")
73
+ ruby VIM::command( 'let s:rubypath = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
74
+ let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
75
+ elseif executable("ruby")
76
+ let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
77
+ if &shellxquote == "'"
78
+ let s:rubypath = system('ruby -e "' . s:code . '"')
79
+ else
80
+ let s:rubypath = system("ruby -e '" . s:code . "'")
81
+ endif
82
+ let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
83
+ else
84
+ " If we can't call ruby to get its path, just default to using the
85
+ " current directory and the directory of the current file.
86
+ let s:rubypath = ".,,"
87
+ endif
88
+ endif
89
+
90
+ let &l:path = s:rubypath
91
+
92
+ if has("gui_win32") && !exists("b:browsefilter")
93
+ let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
94
+ \ "All Files (*.*)\t*.*\n"
95
+ endif
96
+
97
+ let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< kp<"
98
+ \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
99
+ \."| if exists('&ofu') && has('ruby') | setl ofu< | endif"
100
+ \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif"
101
+
102
+ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
103
+
104
+ noremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b')<CR>
105
+ noremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','')<CR>
106
+ noremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b')<CR>
107
+ noremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','')<CR>
108
+
109
+ noremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b')<CR>
110
+ noremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','')<CR>
111
+ noremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b')<CR>
112
+ noremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','')<CR>
113
+
114
+ let b:undo_ftplugin = b:undo_ftplugin
115
+ \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
116
+ \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'"
117
+
118
+ if maparg("\<C-]>",'n') == ''
119
+ nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR>
120
+ nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
121
+ nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
122
+ nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
123
+ nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
124
+ nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
125
+ nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
126
+ nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
127
+ nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
128
+ let b:undo_ftplugin = b:undo_ftplugin
129
+ \."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
130
+ \."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
131
+ \."| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'"
132
+ \."| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'"
133
+ endif
134
+ endif
135
+
136
+ let &cpo = s:cpo_save
137
+ unlet s:cpo_save
138
+
139
+ if exists("g:did_ruby_ftplugin_functions")
140
+ finish
141
+ endif
142
+ let g:did_ruby_ftplugin_functions = 1
143
+
144
+ function! RubyBalloonexpr()
145
+ if !exists('s:ri_found')
146
+ let s:ri_found = executable('ri')
147
+ endif
148
+ if s:ri_found
149
+ let line = getline(v:beval_lnum)
150
+ let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$')
151
+ let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g')
152
+ let str = b.a
153
+ let before = strpart(line,0,v:beval_col-strlen(b))
154
+ let after = strpart(line,v:beval_col+strlen(a))
155
+ if str =~ '^\.'
156
+ let str = substitute(str,'^\.','#','g')
157
+ if before =~ '\]\s*$'
158
+ let str = 'Array'.str
159
+ elseif before =~ '}\s*$'
160
+ " False positives from blocks here
161
+ let str = 'Hash'.str
162
+ elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$'
163
+ let str = 'String'.str
164
+ elseif before =~ '\$\d\+\.\d\+\s*$'
165
+ let str = 'Float'.str
166
+ elseif before =~ '\$\d\+\s*$'
167
+ let str = 'Integer'.str
168
+ elseif before =~ '/\s*$'
169
+ let str = 'Regexp'.str
170
+ else
171
+ let str = substitute(str,'^#','.','')
172
+ endif
173
+ endif
174
+ let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','')
175
+ let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','')
176
+ let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','')
177
+ let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','')
178
+ let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','')
179
+ let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','')
180
+ if str !~ '^\w'
181
+ return ''
182
+ endif
183
+ silent! let res = substitute(system("ri -f simple -T \"".str.'"'),'\n$','','')
184
+ if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method'
185
+ return ''
186
+ endif
187
+ return res
188
+ else
189
+ return ""
190
+ endif
191
+ endfunction
192
+
193
+ function! s:searchsyn(pattern,syn,flags)
194
+ norm! m'
195
+ let i = 0
196
+ let cnt = v:count ? v:count : 1
197
+ while i < cnt
198
+ let i = i + 1
199
+ let line = line('.')
200
+ let col = col('.')
201
+ let pos = search(a:pattern,'W'.a:flags)
202
+ while pos != 0 && s:synname() !~# a:syn
203
+ let pos = search(a:pattern,'W'.a:flags)
204
+ endwhile
205
+ if pos == 0
206
+ call cursor(line,col)
207
+ return
208
+ endif
209
+ endwhile
210
+ endfunction
211
+
212
+ function! s:synname()
213
+ return synIDattr(synID(line('.'),col('.'),0),'name')
214
+ endfunction
215
+
216
+ function! RubyCursorIdentifier()
217
+ let asciicode = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)'
218
+ let number = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode
219
+ let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)'
220
+ let method = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)'
221
+ let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)'
222
+ let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)'
223
+ let pattern = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)'
224
+ let [lnum, col] = searchpos(pattern,'bcn',line('.'))
225
+ let raw = matchstr(getline('.')[col-1 : ],pattern)
226
+ let stripped = substitute(substitute(raw,'\s\+=$','=',''),'^\s*:\=','','')
227
+ return stripped == '' ? expand("<cword>") : stripped
228
+ endfunction
229
+
230
+ "
231
+ " Instructions for enabling "matchit" support:
232
+ "
233
+ " 1. Look for the latest "matchit" plugin at
234
+ "
235
+ " http://www.vim.org/scripts/script.php?script_id=39
236
+ "
237
+ " It is also packaged with Vim, in the $VIMRUNTIME/macros directory.
238
+ "
239
+ " 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc).
240
+ "
241
+ " 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin).
242
+ "
243
+ " 4. Ensure this file (ftplugin/ruby.vim) is installed.
244
+ "
245
+ " 5. Ensure you have this line in your $HOME/.vimrc:
246
+ " filetype plugin on
247
+ "
248
+ " 6. Restart Vim and create the matchit documentation:
249
+ "
250
+ " :helptags ~/.vim/doc
251
+ "
252
+ " Now you can do ":help matchit", and you should be able to use "%" on Ruby
253
+ " keywords. Try ":echo b:match_words" to be sure.
254
+ "
255
+ " Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the
256
+ " locations of plugin directories, etc., as there are several options, and it
257
+ " differs on Windows. Email gsinclair@soyabean.com.au if you need help.
258
+ "
259
+
260
+ " vim: nowrap sw=2 sts=2 ts=8: