tomkersten-vixploder 0.1.1 → 0.1.2

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 (106) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +105 -0
  3. data/PostInstall.txt +21 -0
  4. data/README.rdoc +131 -0
  5. data/Rakefile +21 -0
  6. data/bin/256colors2.pl +63 -0
  7. data/bin/colortest +365 -0
  8. data/bin/vixplode +10 -0
  9. data/lib/dotfiles/aliases +30 -0
  10. data/lib/dotfiles/gvimrc +20 -0
  11. data/lib/dotfiles/vim/.VimballRecord +2 -0
  12. data/lib/dotfiles/vim/after/ftplugin/actionscript_snippets.vim +9 -0
  13. data/lib/dotfiles/vim/after/ftplugin/aspvbs_snippets.vim +17 -0
  14. data/lib/dotfiles/vim/after/ftplugin/c_snippets.vim +58 -0
  15. data/lib/dotfiles/vim/after/ftplugin/css_snippets.vim +30 -0
  16. data/lib/dotfiles/vim/after/ftplugin/django_model_snippets.vim +61 -0
  17. data/lib/dotfiles/vim/after/ftplugin/django_template_snippets.vim +32 -0
  18. data/lib/dotfiles/vim/after/ftplugin/f-script_snippets.vim +14 -0
  19. data/lib/dotfiles/vim/after/ftplugin/haskell_snippets.vim +9 -0
  20. data/lib/dotfiles/vim/after/ftplugin/html_snippets.vim +57 -0
  21. data/lib/dotfiles/vim/after/ftplugin/java_snippets.vim +52 -0
  22. data/lib/dotfiles/vim/after/ftplugin/javascript_snippets.vim +10 -0
  23. data/lib/dotfiles/vim/after/ftplugin/latex_snippets.vim +13 -0
  24. data/lib/dotfiles/vim/after/ftplugin/logo_snippets.vim +9 -0
  25. data/lib/dotfiles/vim/after/ftplugin/markdown_snippets.vim +10 -0
  26. data/lib/dotfiles/vim/after/ftplugin/movable_type_snippets.vim +14 -0
  27. data/lib/dotfiles/vim/after/ftplugin/objc_snippets.vim +53 -0
  28. data/lib/dotfiles/vim/after/ftplugin/ocaml_snippets.vim +26 -0
  29. data/lib/dotfiles/vim/after/ftplugin/perl_snippets.vim +23 -0
  30. data/lib/dotfiles/vim/after/ftplugin/php_snippets.vim +30 -0
  31. data/lib/dotfiles/vim/after/ftplugin/phpdoc_snippets.vim +19 -0
  32. data/lib/dotfiles/vim/after/ftplugin/propel_snippets.vim +14 -0
  33. data/lib/dotfiles/vim/after/ftplugin/python_snippets.vim +202 -0
  34. data/lib/dotfiles/vim/after/ftplugin/rails_snippets.vim +54 -0
  35. data/lib/dotfiles/vim/after/ftplugin/ruby_snippets.vim +32 -0
  36. data/lib/dotfiles/vim/after/ftplugin/sh_snippets.vim +12 -0
  37. data/lib/dotfiles/vim/after/ftplugin/slate_snippets.vim +19 -0
  38. data/lib/dotfiles/vim/after/ftplugin/smarty_snippets.vim +35 -0
  39. data/lib/dotfiles/vim/after/ftplugin/symfony_snippets.vim +21 -0
  40. data/lib/dotfiles/vim/after/ftplugin/tcl_snippets.vim +14 -0
  41. data/lib/dotfiles/vim/after/ftplugin/template_toolkit_snippets.vim +13 -0
  42. data/lib/dotfiles/vim/after/ftplugin/tex_snippets.vim +13 -0
  43. data/lib/dotfiles/vim/after/ftplugin/xhtml_snippets.vim +48 -0
  44. data/lib/dotfiles/vim/autoload/fakeclip.vim +253 -0
  45. data/lib/dotfiles/vim/autoload/rails.vim +4377 -0
  46. data/lib/dotfiles/vim/autoload/rubycomplete.vim +802 -0
  47. data/lib/dotfiles/vim/colors/inkpot.vim +212 -0
  48. data/lib/dotfiles/vim/colors/ir_black.vim +212 -0
  49. data/lib/dotfiles/vim/colors/ir_black_mod.vim +213 -0
  50. data/lib/dotfiles/vim/colors/railscasts.vim +100 -0
  51. data/lib/dotfiles/vim/colors/rubyblue.vim +74 -0
  52. data/lib/dotfiles/vim/colors/twilight.vim +75 -0
  53. data/lib/dotfiles/vim/colors/twilight2.vim +74 -0
  54. data/lib/dotfiles/vim/colors/wombat256.vim +302 -0
  55. data/lib/dotfiles/vim/compiler/eruby.vim +41 -0
  56. data/lib/dotfiles/vim/compiler/ruby.vim +68 -0
  57. data/lib/dotfiles/vim/compiler/rubyunit.vim +35 -0
  58. data/lib/dotfiles/vim/doc/NERD_tree.txt +1235 -0
  59. data/lib/dotfiles/vim/doc/fakeclip.txt +190 -0
  60. data/lib/dotfiles/vim/doc/matchit.txt +406 -0
  61. data/lib/dotfiles/vim/doc/project.txt +710 -0
  62. data/lib/dotfiles/vim/doc/rails.txt +1123 -0
  63. data/lib/dotfiles/vim/doc/snippets_emu.txt +354 -0
  64. data/lib/dotfiles/vim/doc/surround.txt +218 -0
  65. data/lib/dotfiles/vim/doc/tags +433 -0
  66. data/lib/dotfiles/vim/filetype.vim +13 -0
  67. data/lib/dotfiles/vim/ftdetect/gist.vim +3 -0
  68. data/lib/dotfiles/vim/ftdetect/ruby.vim +14 -0
  69. data/lib/dotfiles/vim/ftplugin/eruby.vim +101 -0
  70. data/lib/dotfiles/vim/ftplugin/ruby.vim +230 -0
  71. data/lib/dotfiles/vim/indent/eruby.vim +73 -0
  72. data/lib/dotfiles/vim/indent/ruby.vim +373 -0
  73. data/lib/dotfiles/vim/plugin/NERD_tree.vim +3536 -0
  74. data/lib/dotfiles/vim/plugin/comments.vim +321 -0
  75. data/lib/dotfiles/vim/plugin/fakeclip.vim +174 -0
  76. data/lib/dotfiles/vim/plugin/fuzzyfinder.vim +1676 -0
  77. data/lib/dotfiles/vim/plugin/fuzzyfinder_textmate.vim +150 -0
  78. data/lib/dotfiles/vim/plugin/gist.vim +241 -0
  79. data/lib/dotfiles/vim/plugin/gitdiff.vim +141 -0
  80. data/lib/dotfiles/vim/plugin/matchit.vim +812 -0
  81. data/lib/dotfiles/vim/plugin/mru.vim +787 -0
  82. data/lib/dotfiles/vim/plugin/rails.vim +310 -0
  83. data/lib/dotfiles/vim/plugin/rspec.vim +12 -0
  84. data/lib/dotfiles/vim/plugin/snippets.vim +17 -0
  85. data/lib/dotfiles/vim/plugin/snippetsEmu.vim +973 -0
  86. data/lib/dotfiles/vim/plugin/supertab.vim +531 -0
  87. data/lib/dotfiles/vim/plugin/surround.vim +632 -0
  88. data/lib/dotfiles/vim/ref_vimrc +80 -0
  89. data/lib/dotfiles/vim/ruby/fuzzy_file_finder.rb +353 -0
  90. data/lib/dotfiles/vim/syntax/eruby.vim +85 -0
  91. data/lib/dotfiles/vim/syntax/haml.vim +113 -0
  92. data/lib/dotfiles/vim/syntax/mkd.vim +86 -0
  93. data/lib/dotfiles/vim/syntax/ruby.vim +324 -0
  94. data/lib/dotfiles/vim/syntax/sass.vim +93 -0
  95. data/lib/dotfiles/vimrc +269 -0
  96. data/lib/vixplode/cli.rb +73 -0
  97. data/lib/vixploder.rb +6 -0
  98. data/script/console +10 -0
  99. data/script/destroy +14 -0
  100. data/script/generate +14 -0
  101. data/spec/spec.opts +1 -0
  102. data/spec/spec_helper.rb +10 -0
  103. data/spec/vixplode_cli_spec.rb +15 -0
  104. data/spec/vixploder_spec.rb +7 -0
  105. data/tasks/rspec.rake +21 -0
  106. metadata +202 -8
@@ -0,0 +1,150 @@
1
+ if has("ruby")
2
+
3
+ " ====================================================================================
4
+ " COPIED FROM FUZZYFINDER.VIM {{{
5
+ " since they can't be called from outside fuzzyfinder.vim
6
+ " ====================================================================================
7
+ function! s:GetCurrentTagFiles()
8
+ return sort(filter(map(tagfiles(), 'fnamemodify(v:val, '':p'')'), 'filereadable(v:val)'))
9
+ endfunction
10
+
11
+ function! s:HighlightPrompt(prompt, highlight)
12
+ syntax clear
13
+ execute printf('syntax match %s /^\V%s/', a:highlight, escape(a:prompt, '\'))
14
+ endfunction
15
+
16
+ function! s:HighlightError()
17
+ syntax clear
18
+ syntax match Error /^.*$/
19
+ endfunction
20
+ " ------------------------------------------------------------------------------------
21
+ " }}}
22
+ " ====================================================================================
23
+
24
+ command! -bang -narg=? -complete=file FuzzyFinderTextMate call FuzzyFinderTextMateLauncher(<q-args>, len(<q-bang>), bufnr('%'), s:GetCurrentTagFiles())
25
+
26
+ function! InstantiateTextMateMode() "{{{
27
+ ruby << RUBY
28
+ begin
29
+ require "#{ENV['HOME']}/.vim/ruby/fuzzy_file_finder"
30
+ rescue LoadError
31
+ begin
32
+ require 'rubygems'
33
+ begin
34
+ gem 'fuzzy_file_finder'
35
+ rescue Gem::LoadError
36
+ gem 'jamis-fuzzy_file_finder'
37
+ end
38
+ rescue LoadError
39
+ end
40
+
41
+ require 'fuzzy_file_finder'
42
+ end
43
+ RUBY
44
+
45
+ " Configuration option: g:fuzzy_roots
46
+ " Specifies roots in which the FuzzyFinder will search.
47
+ if !exists('g:fuzzy_roots')
48
+ let g:fuzzy_roots = ['.']
49
+ endif
50
+
51
+ " Configuration option: g:fuzzy_ceiling
52
+ " Specifies the maximum number of files that FuzzyFinder allows to be searched
53
+ if !exists('g:fuzzy_ceiling')
54
+ let g:fuzzy_ceiling = 10000
55
+ endif
56
+
57
+ " Configuration option: g:fuzzy_ignore
58
+ " A semi-colon delimited list of file glob patterns to ignore
59
+ if !exists('g:fuzzy_ignore')
60
+ let g:fuzzy_ignore = ""
61
+ endif
62
+
63
+ " Configuration option: g:fuzzy_matching_limit
64
+ " The maximum number of matches to return at a time. Defaults to 200, via the
65
+ " g:FuzzyFinderMode.TextMate.matching_limit variable, but using a global variable
66
+ " makes it easier to set this value.
67
+
68
+ ruby << RUBY
69
+ def finder
70
+ @finder ||= begin
71
+ roots = VIM.evaluate("g:fuzzy_roots").split("\n")
72
+ ceiling = VIM.evaluate("g:fuzzy_ceiling").to_i
73
+ ignore = VIM.evaluate("g:fuzzy_ignore").split(/;/)
74
+ FuzzyFileFinder.new(roots, ceiling, ignore)
75
+ end
76
+ end
77
+ RUBY
78
+
79
+ let g:FuzzyFinderMode.TextMate = copy(g:FuzzyFinderMode.Base)
80
+
81
+ " ================================================================================
82
+ " This function is copied almost whole-sale from fuzzyfinder.vim. Ideally, I could
83
+ " used the on_complete callback to more cleanly add the new behavior, but the
84
+ " TextMate-style completion broke a few of fuzzyfinder.vim's assumptions, and the
85
+ " only way to patch that up was to override Base.complete...which required me to
86
+ " copy-and-paste much of the original implementation.
87
+ "
88
+ " Ugly. But effective.
89
+ " ================================================================================
90
+ function! g:FuzzyFinderMode.TextMate.complete(findstart, base)
91
+ if a:findstart
92
+ return 0
93
+ elseif !self.exists_prompt(a:base) || len(self.remove_prompt(a:base)) < self.min_length
94
+ return []
95
+ endif
96
+ call s:HighlightPrompt(self.prompt, self.prompt_highlight)
97
+
98
+ let result = []
99
+
100
+ if exists('g:fuzzy_matching_limit')
101
+ let l:limit = g:fuzzy_matching_limit
102
+ else
103
+ let l:limit = self.matching_limit
104
+ endif
105
+
106
+ ruby << RUBY
107
+ text = VIM.evaluate('self.remove_prompt(a:base)')
108
+ limit = VIM.evaluate('l:limit').to_i
109
+
110
+ matches = finder.find(text, limit)
111
+ matches.sort_by { |a| [-a[:score], a[:path]] }.each_with_index do |match, index|
112
+ word = match[:path]
113
+ abbr = "%2d: %s" % [index+1, match[:abbr]]
114
+ menu = "[%5d]" % [match[:score] * 10000]
115
+ VIM.evaluate("add(result, { 'word' : #{word.inspect}, 'abbr' : #{abbr.inspect}, 'menu' : #{menu.inspect} })")
116
+ end
117
+ RUBY
118
+
119
+ if empty(result) || len(result) >= self.matching_limit
120
+ call s:HighlightError()
121
+ endif
122
+
123
+ if !empty(result)
124
+ call feedkeys("\<C-p>\<Down>", 'n')
125
+ endif
126
+
127
+ return result
128
+ endfunction
129
+
130
+ function! FuzzyFinderTextMateLauncher(initial_text, partial_matching, prev_bufnr, tag_files)
131
+ call g:FuzzyFinderMode.TextMate.launch(a:initial_text, a:partial_matching, a:prev_bufnr, a:tag_files)
132
+ endfunction
133
+
134
+ let g:FuzzyFinderOptions.TextMate = copy(g:FuzzyFinderOptions.File)
135
+ endfunction "}}}
136
+
137
+ if !exists('loaded_fuzzyfinder') "{{{
138
+ function! FuzzyFinderTextMateLauncher(initial_text, partial_matching, prev_bufnr, tag_files)
139
+ call InstantiateTextMateMode()
140
+ function! FuzzyFinderTextMateLauncher(initial_text, partial_matching, prev_bufnr, tag_files)
141
+ call g:FuzzyFinderMode.TextMate.launch(a:initial_text, a:partial_matching, a:prev_bufnr, a:tag_files)
142
+ endfunction
143
+ call g:FuzzyFinderMode.TextMate.launch(a:initial_text, a:partial_matching, a:prev_bufnr, a:tag_files)
144
+ endfunction
145
+ finish
146
+ end "}}}
147
+
148
+ call InstantiateTextMateMode()
149
+
150
+ endif
@@ -0,0 +1,241 @@
1
+ "=============================================================================
2
+ " File: gist.vim
3
+ " Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
4
+ " Last Change: 22-Dec-2008. Jan 2008
5
+ " Version: 1.5
6
+ " Usage:
7
+ "
8
+ " :Gist
9
+ " post whole text to gist.
10
+ "
11
+ " :'<,'>Gist
12
+ " post selected text to gist.
13
+ "
14
+ " :Gist -p
15
+ " post whole text to gist with private.
16
+ "
17
+ " :Gist XXXXX
18
+ " edit gist XXXXX.
19
+ "
20
+ " :Gist -l
21
+ " list gists from mine.
22
+ "
23
+ " :Gist -l mattn
24
+ " list gists from mattn.
25
+ "
26
+ " :Gist -la
27
+ " list gists from all.
28
+ "
29
+ " Tips:
30
+ " * if set g:gist_clip_command, gist.vim will copy the gist code.
31
+ "
32
+ " # mac
33
+ " let g:gist_clip_command = 'pbcopy'
34
+ "
35
+ " # linux
36
+ " let g:gist_clip_command = 'xclip -selection clipboard'
37
+ "
38
+ " # others(cygwin?)
39
+ " let g:gist_clip_command = 'putclip'
40
+ "
41
+ " * if you want to detect filetype from gist's filename...
42
+ "
43
+ " # detect filetype if vim failed auto-detection.
44
+ " let g:gist_detect_filetype = 1
45
+ "
46
+ " # detect filetype always.
47
+ " let g:gist_detect_filetype = 2
48
+ "
49
+ " GetLatestVimScripts: 2423 1 :AutoInstall: gist.vim
50
+
51
+ if &cp || (exists('g:loaded_gist_vim') && g:loaded_gist_vim)
52
+ finish
53
+ endif
54
+ let g:loaded_gist_vim = 1
55
+
56
+ if (!exists('g:github_user') || !exists('g:github_token')) && !executable('git')
57
+ echoerr "Gist: require 'git' command"
58
+ finish
59
+ endif
60
+
61
+ if !executable('curl')
62
+ echoerr "Gist: require 'curl' command"
63
+ finish
64
+ endif
65
+
66
+ if !exists('g:gist_detect_filetype')
67
+ let g:gist_detect_filetype = 0
68
+ endif
69
+
70
+ function! s:nr2hex(nr)
71
+ let n = a:nr
72
+ let r = ""
73
+ while n
74
+ let r = '0123456789ABCDEF'[n % 16] . r
75
+ let n = n / 16
76
+ endwhile
77
+ return r
78
+ endfunction
79
+
80
+ function! s:encodeURIComponent(instr)
81
+ let instr = iconv(a:instr, &enc, "utf-8")
82
+ let len = strlen(instr)
83
+ let i = 0
84
+ let outstr = ''
85
+ while i < len
86
+ let ch = instr[i]
87
+ if ch =~# '[0-9A-Za-z-._~!''()*]'
88
+ let outstr = outstr . ch
89
+ elseif ch == ' '
90
+ let outstr = outstr . '+'
91
+ else
92
+ let outstr = outstr . '%' . substitute('0' . s:nr2hex(char2nr(ch)), '^.*\(..\)$', '\1', '')
93
+ endif
94
+ let i = i + 1
95
+ endwhile
96
+ return outstr
97
+ endfunction
98
+
99
+ function! s:GistList(user, token, gistls)
100
+ if a:gistls == '-all'
101
+ let url = 'http://gist.github.com/gists'
102
+ else
103
+ let url = 'http://gist.github.com/'.a:gistls
104
+ endif
105
+ exec 'silent split gist:'.a:gistls
106
+ exec 'silent 0r! curl -s '.url
107
+ silent! %s/>/>\r/g
108
+ silent! %s/</\r</g
109
+ silent! %g/<pre/,/<\/pre/join!
110
+ silent! %v/^\(gist:\|<pre>\)/d _
111
+ silent! %s/<div[^>]*>/\r /g
112
+ silent! %s/<\/pre>/\r/g
113
+ silent! %s/<[^>]\+>//g
114
+ silent! %s/\r//g
115
+ silent! %s/&nbsp;/ /g
116
+ silent! %s/&quot;/"/g
117
+ silent! %s/&amp;/\&/g
118
+ silent! %s/&gt;/>/g
119
+ silent! %s/&lt;/</g
120
+ silent! %s/&#\(\d\d\);/\=nr2char(submatch(1))/g
121
+ setlocal nomodified
122
+ syntax match SpecialKey /^gist: /he=e-2
123
+ exec 'nnoremap <silent> <buffer> <cr> :call <SID>GistListAction()<cr>'
124
+ normal! gg
125
+ endfunction
126
+
127
+ function! s:GistDetectFiletype(gistid)
128
+ let url = 'http://gist.github.com/'.a:gistid
129
+ let res = system('curl -s '.url)
130
+ let res = substitute(res, '^.*<div class="meta">[\r\n ]*<div class="info">[\r\n ]*<span>\([^>]\+\)</span>.*$', '\1', '')
131
+ let res = substitute(res, '.*\(\.[^\.]\+\)$', '\1', '')
132
+ if res =~ '^\.'
133
+ silent! exec "doau BufRead *".res
134
+ else
135
+ silent! exec "setlocal ft=".tolower(res)
136
+ endif
137
+ endfunction
138
+
139
+ function! s:GistGet(user, token, gistid)
140
+ let url = 'http://gist.github.com/'.a:gistid.'.txt'
141
+ exec 'silent split gist:'.a:gistid
142
+ filetype detect
143
+ exec 'silent 0r! curl -s '.url
144
+ setlocal nomodified
145
+ doau StdinReadPost <buffer>
146
+ normal! gg
147
+ if (&ft == '' && g:gist_detect_filetype == 1) || g:gist_detect_filetype == 2
148
+ call s:GistDetectFiletype(a:gistid)
149
+ endif
150
+ if exists('g:gist_clip_command')
151
+ exec 'silent w !'.g:gist_clip_command
152
+ endif
153
+ endfunction
154
+
155
+ function! s:GistListAction()
156
+ let line = getline('.')
157
+ let mx = '^gist: \(\w\+\)$'
158
+ if line =~# mx
159
+ let gistid = substitute(line, mx, '\1', '')
160
+ call s:GistGet(g:github_user, g:github_token, gistid)
161
+ endif
162
+ endfunction
163
+
164
+ function! s:GistPut(user, token, content, private)
165
+ let ext = expand('%:e')
166
+ let ext = len(ext) ? '.'.ext : ''
167
+ let name = expand('%:t')
168
+ let query = [
169
+ \ 'file_ext[gistfile1]=%s',
170
+ \ 'file_name[gistfile1]=%s',
171
+ \ 'file_contents[gistfile1]=%s',
172
+ \ 'login=%s',
173
+ \ 'token=%s',
174
+ \ ]
175
+ if len(a:private)
176
+ call add(query, 'private=on')
177
+ endif
178
+ let squery = printf(join(query, '&'),
179
+ \ s:encodeURIComponent(ext),
180
+ \ s:encodeURIComponent(name),
181
+ \ s:encodeURIComponent(a:content),
182
+ \ s:encodeURIComponent(a:user),
183
+ \ s:encodeURIComponent(a:token))
184
+ unlet query
185
+
186
+ let file = tempname()
187
+ exec 'redir! > '.file
188
+ silent echo squery
189
+ redir END
190
+ echon " Posting it to gist... "
191
+ let quote = &shellxquote == '"' ? "'" : '"'
192
+ let url = 'http://gist.github.com/gists'
193
+ let res = system('curl -i -d @'.quote.file.quote.' '.url)
194
+ call delete(file)
195
+ let res = matchstr(split(res, "\n"), '^Location: ')
196
+ let res = substitute(res, '^.*: ', '', '')
197
+ let throwaway = system('echo '.quote.res.quote.'| pbcopy')
198
+ echo 'Done!'
199
+ echo 'Gist URL: '.res
200
+ endfunction
201
+
202
+ function! Gist(line1, line2, ...)
203
+ if !exists('g:github_user')
204
+ let g:github_user = substitute(system('git config --global github.user'), "\n", '', '')
205
+ endif
206
+ if !exists('g:github_token')
207
+ let g:github_token = substitute(system('git config --global github.token'), "\n", '', '')
208
+ endif
209
+
210
+ let opt = (a:0 > 0) ? substitute(a:1, ' ', '', 'g') : ''
211
+ let private = ''
212
+ let gistid = ''
213
+ let gistls = ''
214
+ let listmx = '^\(-l\|--list\)\s*\([^\s]\+\)\?$'
215
+ if opt =~ '^\(-la\|--listall\)'
216
+ let gistls = '-all'
217
+ elseif opt =~ listmx
218
+ let gistls = substitute(opt, listmx, '\2', '')
219
+ if len(gistls) == 0
220
+ let gistls = g:github_user
221
+ endif
222
+ elseif opt =~ '-p\|--private'
223
+ let private = 'on'
224
+ elseif opt =~ '^\w\+$'
225
+ let gistid = opt
226
+ elseif len(opt) > 0
227
+ echoerr 'Invalid arguments'
228
+ return
229
+ endif
230
+
231
+ if len(gistls) > 0
232
+ call s:GistList(g:github_user, g:github_token, gistls)
233
+ elseif len(gistid) > 0
234
+ call s:GistGet(g:github_user, g:github_token, gistid)
235
+ else
236
+ let content = join(getline(a:line1, a:line2), "\n")
237
+ call s:GistPut(g:github_user, g:github_token, content, private)
238
+ endif
239
+ endfunction
240
+
241
+ command! -nargs=? -range=% Gist :call Gist(<line1>, <line2>, <f-args>)
@@ -0,0 +1,141 @@
1
+ " gitdiff.vim : git helper functions
2
+ " http://www.vim.org/scripts/script.php?script_id=1846
3
+ "
4
+ " Author: Bart Trojanowski <bart@jukie.net>
5
+ " Date: 2007/05/02
6
+ " Version: 2
7
+ "
8
+ " GetLatestVimScripts: 1846 1 :AutoInstall: gitdiff.vim
9
+
10
+ "------------------------------------------------------------------------
11
+ "
12
+ " This script currently installs two new functions:
13
+ "
14
+ " :GITDiff [rev]
15
+ "
16
+ " Vertical split with working buffer, showing vimdiff between current
17
+ " buffer and a commit.
18
+ "
19
+ " :GITChanges [rev]
20
+ "
21
+ " Highlights modified lines in current buffer.
22
+ " Disable with :syntax on
23
+ "
24
+ "------------------------------------------------------------------------
25
+
26
+ if exists("loaded_gitdiff") || &compatible
27
+ finish
28
+ endif
29
+ let loaded_gitdiff = 1
30
+
31
+ "" ------------------------------------------------------------------------
32
+ " based on svndiff from...
33
+ " http://www.axisym3.net/jdany/vim-the-editor/
34
+ "" ------------------------------------------------------------------------
35
+
36
+ command! -nargs=? GITDiff :call s:GitDiff(<f-args>)
37
+
38
+ function! s:GitDiff(...)
39
+ if a:0 == 1
40
+ let rev = a:1
41
+ else
42
+ let rev = 'HEAD'
43
+ endif
44
+
45
+ let ftype = &filetype
46
+
47
+ let prefix = system("git rev-parse --show-prefix")
48
+ let thisfile = substitute(expand("%"),getcwd(),'','')
49
+ let gitfile = substitute(prefix,'\n$','','') . thisfile
50
+
51
+ " Check out the revision to a temp file
52
+ let tmpfile = tempname()
53
+ let cmd = "git show " . rev . ":" . gitfile . " > " . tmpfile
54
+ let cmd_output = system(cmd)
55
+ if v:shell_error && cmd_output != ""
56
+ echohl WarningMsg | echon cmd_output
57
+ return
58
+ endif
59
+
60
+ " Begin diff
61
+ exe "vert diffsplit" . tmpfile
62
+ exe "set filetype=" . ftype
63
+ set foldmethod=diff
64
+ wincmd l
65
+
66
+ endfunction
67
+
68
+ "" ------------------------------------------------------------------------
69
+ "" this block is taken from svndiff.vim
70
+ "" http://www.vim.org/scripts/script.php?script_id=1881#1.0
71
+ "" by Zevv Ico
72
+ "" ------------------------------------------------------------------------
73
+
74
+ command! -nargs=? GITChanges :call s:GitChanges(<f-args>)
75
+
76
+ function! s:GitChanges(...)
77
+
78
+ if a:0 == 1
79
+ let rev = a:1
80
+ else
81
+ let rev = 'HEAD'
82
+ endif
83
+
84
+ " Check if this file is managed by git, exit otherwise
85
+
86
+ let prefix = system("git rev-parse --show-prefix")
87
+ let thisfile = substitute(expand("%"),getcwd(),'','')
88
+ let gitfile = substitute(prefix,'\n$','','') . thisfile
89
+
90
+ " Reset syntax highlighting
91
+
92
+ syntax off
93
+
94
+ " Pipe the current buffer contents to a shell command calculating the diff
95
+ " in a friendly parsable format
96
+
97
+ let contents = join(getbufline("%", 1, "$"), "\n")
98
+ let diff = system("diff -u0 <(git show " . rev . ":" . gitfile . ") <(cat;echo)", contents)
99
+
100
+ " Parse the output of the diff command and hightlight changed, added and
101
+ " removed lines
102
+
103
+ for line in split(diff, '\n')
104
+
105
+ let part = matchlist(line, '@@ -\([0-9]*\),*\([0-9]*\) +\([0-9]*\),*\([0-9]*\) @@')
106
+
107
+ if ! empty(part)
108
+ let old_from = part[1]
109
+ let old_count = part[2] == '' ? 1 : part[2]
110
+ let new_from = part[3]
111
+ let new_count = part[4] == '' ? 1 : part[4]
112
+
113
+ " Figure out if text was added, removed or changed.
114
+
115
+ if old_count == 0
116
+ let from = new_from
117
+ let to = new_from + new_count - 1
118
+ let group = 'DiffAdd'
119
+ elseif new_count == 0
120
+ let from = new_from
121
+ let to = new_from + 1
122
+ let group = 'DiffDelete'
123
+ else
124
+ let from = new_from
125
+ let to = new_from + new_count - 1
126
+ let group = 'DiffChange'
127
+ endif
128
+
129
+ " Set the actual syntax highlight
130
+
131
+ exec 'syntax region ' . group . ' start=".*\%' . from . 'l" end=".*\%' . to . 'l"'
132
+
133
+ endif
134
+
135
+ endfor
136
+
137
+ endfunction
138
+
139
+
140
+ " vi: ts=2 sw=2
141
+