vimdo 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 413d520ac752991279d4a5b9844e6560a4aaa076
4
+ data.tar.gz: 2e74dd8a044fdeb4d25ee2c8cff4506313e0e051
5
+ SHA512:
6
+ metadata.gz: 19000317c50f47480f30a9fb3dd806dd0932c7170bdfe1ea6e9b590e7c15a0526fc62cef31580402ae9a8f62e9aa9c4fe4d7d32c0a0c931120de904a0a5b97ac
7
+ data.tar.gz: f7bb539fa87c633ecb10da4f7b18e13df9f8d5b50c63b0e36cb1680c9bda7ce2a2858f9b01f9289700a1b61e0ca34b5bfa32fcd17fc519aa9f527904180f9a6f
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
4
+
5
+ source "https://rubygems.org/"
6
+
7
+ gem "vimrunner", "~>0.2.2"
8
+ gem "thor", "~>0.18.0"
9
+
10
+ gem "rdoc", "~>3.10", :group => [:development, :test]
11
+ gem "rspec", ">=2.13", :group => [:development, :test]
12
+ gem "rake", ">=10.0.0", :group => [:development, :test]
13
+ gem "hoe", ">=0", :group => [:development, :test]
14
+ gem "hoe-gemspec", ">=0", :group => [:development, :test]
15
+ gem "hoe-git", ">=0", :group => [:development, :test]
16
+ gem "hoe-version", ">=0", :group => [:development, :test]
17
+ gem "hoe-bundler", ">=0", :group => [:development, :test]
18
+ gem "guard", ">=0", :group => [:development, :test]
19
+ gem "guard-rspec", ">=0", :group => [:development, :test]
20
+ gem "terminal-notifier-guard", ">=0", :group => [:development, :test]
21
+ gem "growl", ">=0", :group => [:development, :test]
22
+
23
+ # vim: syntax=ruby
@@ -0,0 +1,67 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ coderay (1.0.9)
5
+ diff-lcs (1.2.2)
6
+ formatador (0.2.4)
7
+ growl (1.0.3)
8
+ guard (1.7.0)
9
+ formatador (>= 0.2.4)
10
+ listen (>= 0.6.0)
11
+ lumberjack (>= 1.0.2)
12
+ pry (>= 0.9.10)
13
+ thor (>= 0.14.6)
14
+ guard-rspec (2.5.2)
15
+ guard (>= 1.1)
16
+ rspec (~> 2.11)
17
+ hoe (3.5.2)
18
+ rake (>= 0.8, < 11.0)
19
+ hoe-bundler (1.2.0)
20
+ hoe (>= 2.2.0)
21
+ hoe-gemspec (1.0.0)
22
+ hoe (>= 2.2.0)
23
+ hoe-git (1.5.0)
24
+ hoe (>= 2.2.0)
25
+ hoe-version (1.2.0)
26
+ json (1.7.7)
27
+ listen (0.7.3)
28
+ lumberjack (1.0.3)
29
+ method_source (0.8.1)
30
+ pry (0.9.12)
31
+ coderay (~> 1.0.5)
32
+ method_source (~> 0.8)
33
+ slop (~> 3.4)
34
+ rake (10.0.4)
35
+ rdoc (3.12.2)
36
+ json (~> 1.4)
37
+ rspec (2.13.0)
38
+ rspec-core (~> 2.13.0)
39
+ rspec-expectations (~> 2.13.0)
40
+ rspec-mocks (~> 2.13.0)
41
+ rspec-core (2.13.1)
42
+ rspec-expectations (2.13.0)
43
+ diff-lcs (>= 1.1.3, < 2.0)
44
+ rspec-mocks (2.13.1)
45
+ slop (3.4.4)
46
+ terminal-notifier-guard (1.5.3)
47
+ thor (0.18.1)
48
+ vimrunner (0.2.2)
49
+
50
+ PLATFORMS
51
+ ruby
52
+
53
+ DEPENDENCIES
54
+ growl
55
+ guard
56
+ guard-rspec
57
+ hoe
58
+ hoe-bundler
59
+ hoe-gemspec
60
+ hoe-git
61
+ hoe-version
62
+ rake (>= 10.0.0)
63
+ rdoc (~> 3.10)
64
+ rspec (>= 2.13)
65
+ terminal-notifier-guard
66
+ thor (~> 0.18.0)
67
+ vimrunner (~> 0.2.2)
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2012-10-01
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
@@ -0,0 +1,12 @@
1
+ Gemfile
2
+ Gemfile.lock
3
+ History.txt
4
+ Manifest.txt
5
+ README.md
6
+ Rakefile
7
+ bin/vimdo
8
+ lib/vimdo.rb
9
+ lib/vimdo/cli.rb
10
+ lib/vimdo/friendly_error.rb
11
+ lib/vimdo/ui.rb
12
+ lib/vimdo/version.rb
@@ -0,0 +1,106 @@
1
+ # vimdo
2
+
3
+ * home :: http://zhaocai.github.com/vimdo
4
+ * rdoc :: http://rubydoc.info/gems/vimdo/
5
+ * code :: https://github.com/zhaocai/vimdo
6
+ * bugs :: https://github.com/zhaocai/vimdo/issues
7
+
8
+
9
+ ## DESCRIPTION:
10
+
11
+ Vimdo is a ruby gem to automate tasks with vim remote servers.
12
+ Predefined tasks include diff, merge, etc. You can define your own recipes
13
+ to run tasks with Vim. For example, you can define `DirDiff` recipe:
14
+
15
+ ```ruby
16
+ module VimDo
17
+ class CLI < Thor
18
+
19
+ desc "dirdiff", "directory diff in vim"
20
+ def dirdiff(from, to)
21
+ [from, to].each do |f|
22
+ unless File.directory?(f)
23
+ raise PathError "#{f} is not directory!"
24
+ end
25
+ end
26
+
27
+ from, to = [from, to].map {|f| File.expand_path(f) }
28
+ commands(%Q{exec 'DirDiff ' fnameescape("#{from}") fnameescape("#{to}")})
29
+ end
30
+
31
+ end
32
+ end
33
+
34
+ ```
35
+
36
+ Then run `vimdo dirdiff path/to/a path/to/b` from the command line or other tools
37
+
38
+
39
+ ## INSTALLATION:
40
+
41
+ * `[sudo] macgem install vimdo`
42
+
43
+
44
+
45
+ ## COMMAND LINE INTERFACE:
46
+
47
+ ### VimDo commands:
48
+ vimdo commands # execute commands in vim
49
+ vimdo diff # diff in vim
50
+ vimdo edit # edit file +filename+ with Vim
51
+ vimdo help [COMMAND] # Describe available commands or one specific command
52
+ vimdo merge # LOCAL(= mine), MERGED(= yours), REMOTE(= merged output), [BASE(= common parent)]
53
+ vimdo normal # switch vim to normal mode and type the given keys
54
+
55
+ ### Options:
56
+ -s, [--servername=servername to connect]
57
+ # Default: VIM
58
+ -e, [--executable=specifiy vim executable]
59
+ -u, [--vimrc=specifiy vimrc]
60
+ # Default: ~/.vimdorc
61
+ [--no-color=disable colorization in output]
62
+ -v, [--verbose=enable verbose output mode]
63
+
64
+ ## RECIPES:
65
+
66
+ The path to search for recipes is defined in `~/.vimdorc` in yaml format.
67
+
68
+ ```yaml
69
+ ---
70
+ :recipes :
71
+ - ~/.vimdo/recipes/
72
+
73
+ ```
74
+
75
+
76
+
77
+ ## KNOWN ISSUE:
78
+
79
+
80
+ ## DEVELOPERS:
81
+
82
+ After checking out the source, run:
83
+
84
+ $ rake newb
85
+
86
+ This task will install any missing dependencies, run the tests/specs,
87
+ and generate the RDoc.
88
+
89
+ ## LICENSE:
90
+
91
+ Copyright (c) 2013 Zhao Cai <caizhaoff@gmail.com>
92
+
93
+ This program is free software: you can redistribute it and/or modify it under
94
+ the terms of the GNU General Public License as published by the Free Software
95
+ Foundation, either version 3 of the License, or (at your option)
96
+ any later version.
97
+
98
+ This program is distributed in the hope that it will be useful, but WITHOUT
99
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
100
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
101
+
102
+ You should have received a copy of the GNU General Public License along with
103
+ this program. If not, see <http://www.gnu.org/licenses/>.
104
+
105
+
106
+
@@ -0,0 +1,34 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.plugin :gemspec
7
+ Hoe.plugin :bundler
8
+ Hoe.plugin :git
9
+ Hoe.plugin :test
10
+ Hoe.plugin :version
11
+
12
+ Hoe.spec 'vimdo' do
13
+
14
+ developer('Zhao Cai', 'caizhaoff@gmail.com')
15
+ license 'GPL-3'
16
+
17
+ extra_deps << ['vimrunner', '~> 0.2.2']
18
+ extra_deps << ['thor', '~> 0.18.0']
19
+
20
+ extra_dev_deps << ['rspec', '>= 2.13']
21
+ extra_dev_deps << ['rake', '>= 10.0.0']
22
+ extra_dev_deps << ['hoe'] << ['hoe-gemspec'] << ['hoe-git'] << ['hoe-version'] << ['hoe-bundler']
23
+ extra_dev_deps << ['guard'] << ['guard-rspec'] << ['terminal-notifier-guard'] << ['growl']
24
+ end
25
+
26
+ %w{major minor patch}.each { |v|
27
+ desc "Bump #{v.capitalize} Version"
28
+ task "bump:#{v}", [:message] => ["version:bump:#{v}"] do |t, args|
29
+ m = args[:message] ? args[:message] : "Bump version to #{ENV["VERSION"]}"
30
+ sh "git commit -am '#{m}'"
31
+ end
32
+ }
33
+
34
+ # vim: syntax=ruby
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Trap interrupts to quit cleanly. See
4
+ # https://twitter.com/mitchellh/status/283014103189053442
5
+ # Signal.trap("INT") { exit 1 }
6
+
7
+ ($LOAD_PATH << File.expand_path("../../lib", __FILE__)).uniq!
8
+ require 'rubygems' unless defined? Gem # rubygems is only needed in 1.8
9
+
10
+ require 'vimdo'
11
+ require 'vimdo/cli'
12
+ require 'vimdo/friendly_error'
13
+
14
+
15
+ VimDo.with_friendly_errors { VimDo.load_recipes ; VimDo::CLI.start }
16
+
17
+
18
+
19
+ # ~~ modeline ~~ [[[1 -------------------------------------------------------
20
+ # vim: set ft=ruby ts=2 sw=2 tw=78 fdm=syntax fmr=[[[,]]] fdl=1 :
21
+
22
+
@@ -0,0 +1,45 @@
1
+ require "vimrunner"
2
+
3
+ require 'vimdo/version'
4
+ require 'vimdo/ui'
5
+ require 'yaml'
6
+
7
+ module VimDo
8
+
9
+ class VimDoError < RuntimeError
10
+ def self.status_code(code)
11
+ define_method(:status_code) { code }
12
+ end
13
+ end
14
+
15
+ class PathError < VimDoError; status_code(14) ; end
16
+
17
+ class << self
18
+ attr_writer :ui, :rc
19
+
20
+ def ui
21
+ @ui ||= UI.new
22
+ end
23
+
24
+ def rc
25
+ @rc ||= File.expand_path("~/.vimdorc")
26
+ end
27
+
28
+ def connect(options= {})
29
+ options[:name] = options[:servername]
30
+ Vimrunner::Server.new(options).connect
31
+ end
32
+
33
+ def load_recipes
34
+ if File.exists?(rc)
35
+ settings = YAML::load( File.read(rc) )
36
+ settings.fetch(:recipes, []).map {|f| File.expand_path(f) }.each { |rp|
37
+ Dir[ File.join(rp, '*.vimdo') ].each { |r|
38
+ load r
39
+ }
40
+ }
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,105 @@
1
+ require 'thor'
2
+ require "vimdo/ui"
3
+
4
+ module VimDo
5
+
6
+ class CLI < Thor
7
+ include Thor::Actions
8
+ package_name "VimDo"
9
+
10
+ class_option "servername",
11
+ :type => :string,
12
+ :banner => "servername to connect",
13
+ :default => 'VIM',
14
+ :aliases => "-s"
15
+ class_option "executable",
16
+ :type => :string,
17
+ :banner => "specifiy vim executable",
18
+ :aliases => "-e"
19
+ class_option "vimrc",
20
+ :type => :string,
21
+ :default => "~/.vimdorc",
22
+ :banner => "specifiy vimrc",
23
+ :aliases => "-u"
24
+ class_option "no-color",
25
+ :type => :boolean,
26
+ :banner => "disable colorization in output"
27
+ class_option "verbose",
28
+ :type => :boolean,
29
+ :banner => "enable verbose output mode",
30
+ :aliases => "-v"
31
+
32
+ def initialize(*)
33
+ super
34
+ VimDo.ui = UI::Shell.new(options)
35
+ VimDo.ui.level = "debug" if options["verbose"]
36
+ end
37
+
38
+ desc "commands", "execute commands in vim"
39
+ def commands(*cmd)
40
+ vim.normal(":<C-u>#{cmd.join(' <Bar> ')}<CR>")
41
+ end
42
+
43
+ desc "normal", "switch vim to normal mode and type the given keys"
44
+ def normal(keys = "")
45
+ vim.normal(keys)
46
+ end
47
+
48
+
49
+ desc "edit", "edit file +filename+ with Vim"
50
+ def edit(filename)
51
+ vim.edit(filename)
52
+ end
53
+
54
+ desc "diff", "diff in vim"
55
+ def diff(from, to)
56
+ [from, to].each do |f|
57
+ raise PathError "#{f} is not readable!" unless File.readable?(f)
58
+ end
59
+ from = File.expand_path(from)
60
+ to = File.expand_path(to)
61
+ from, to = [from, to].map {|f| File.expand_path(f) }
62
+
63
+ commands('tabnew', 'edit '+vim.fesc(from), 'diffsplit '+vim.fesc(to))
64
+ end
65
+
66
+ desc "merge", "LOCAL(= mine), MERGED(= yours), REMOTE(= merged output), [BASE(= common parent)]"
67
+ long_desc <<-LONGDESC
68
+ LOCAL(= mine), MERGED(= yours), REMOTE(= merged output), [BASE(= common parent)]
69
+ LONGDESC
70
+ def merge(local, merge, remote, base = nil)
71
+
72
+ [local, merge, remote].each do |f|
73
+ unless File.readable?(f)
74
+ raise PathError "#{f} is not readable!"
75
+ end
76
+ end
77
+ raise PathError "#{base} is not readable!" unless File.readable?(base) or base.nil?
78
+
79
+ local, merge, remote = [local, merge, remote].map {|f| File.expand_path(f) }
80
+
81
+ merge_command =
82
+ 'tabnew<Bar>edit ' + vim.fesc(local) +
83
+ '<Bar>diffsplit ' + vim.fesc(merge) +
84
+ '<Bar>diffsplit ' + vim.fesc(remote)
85
+
86
+ if base
87
+ base_split_command =
88
+ "<Bar>diffsplit #{vim.fesc(File.expand_path(base))}<Bar>wincmd J"
89
+ else
90
+ base_split_command = ''
91
+ end
92
+
93
+ switch_command = "<Bar>2wincmd w"
94
+
95
+ commands(merge_command + base_split_command + switch_command)
96
+ end
97
+
98
+
99
+ private
100
+ def vim
101
+ @vim ||= VimDo.connect(options)
102
+ end
103
+ end
104
+ end
105
+
@@ -0,0 +1,31 @@
1
+ module VimDo
2
+ def self.with_friendly_errors
3
+ yield
4
+ rescue VimDo::VimDoError => e
5
+ VimDo.ui.error e.message, :wrap => true
6
+ VimDo.ui.trace e
7
+ exit e.status_code
8
+ rescue LoadError => e
9
+ raise e unless e.message =~ /cannot load such file -- openssl|openssl.so|libcrypto.so/
10
+ VimDo.ui.error "\nCould not load OpenSSL."
11
+ VimDo.ui.warn <<-WARN, :wrap => true
12
+ You must recompile Ruby with OpenSSL support or change the sources in your \
13
+ Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL \
14
+ using RVM are available at rvm.io/packages/openssl.
15
+ WARN
16
+ VimDo.ui.trace e
17
+ exit 1
18
+ rescue Interrupt => e
19
+ VimDo.ui.error "\nQuitting..."
20
+ VimDo.ui.trace e
21
+ exit 1
22
+ rescue SystemExit => e
23
+ exit e.status
24
+ rescue Exception => e
25
+ VimDo.ui.error <<-ERR, :wrap => true
26
+ Unfortunately, a fatal error has occurred. Please see the VimDo \
27
+ troubleshooting documentation or raise an issue in github. Thanks!
28
+ ERR
29
+ raise e
30
+ end
31
+ end
@@ -0,0 +1,126 @@
1
+ module VimDo
2
+ class UI
3
+ def warn(message, newline = nil)
4
+ end
5
+
6
+ def debug(message, newline = nil)
7
+ end
8
+
9
+ def trace(message, newline = nil)
10
+ end
11
+
12
+ def error(message, newline = nil)
13
+ end
14
+
15
+ def info(message, newline = nil)
16
+ end
17
+
18
+ def confirm(message, newline = nil)
19
+ end
20
+
21
+ def debug?
22
+ false
23
+ end
24
+
25
+ def ask(message)
26
+ end
27
+
28
+ class Shell < UI
29
+ LEVELS = %w(silent error warn confirm info debug)
30
+
31
+ attr_writer :shell
32
+
33
+ def initialize(options = {})
34
+ if options["no-color"] || !STDOUT.tty?
35
+ Thor::Base.shell = Thor::Shell::Basic
36
+ end
37
+ @shell = Thor::Base.shell.new
38
+ @level = ENV['DEBUG'] ? "debug" : "info"
39
+ end
40
+
41
+ def info(msg, newline = nil)
42
+ tell_me(msg, nil, newline) if level("info")
43
+ end
44
+
45
+ def confirm(msg, newline = nil)
46
+ tell_me(msg, :green, newline) if level("confirm")
47
+ end
48
+
49
+ def warn(msg, newline = nil)
50
+ tell_me(msg, :yellow, newline) if level("warn")
51
+ end
52
+
53
+ def error(msg, newline = nil)
54
+ tell_me(msg, :red, newline) if level("error")
55
+ end
56
+
57
+ def debug(msg, newline = nil)
58
+ tell_me(msg, nil, newline) if level("debug")
59
+ end
60
+
61
+ def debug?
62
+ # needs to be false instead of nil to be newline param to other methods
63
+ level("debug")
64
+ end
65
+
66
+ def quiet?
67
+ LEVELS.index(@level) <= LEVELS.index("warn")
68
+ end
69
+
70
+ def ask(msg)
71
+ @shell.ask(msg)
72
+ end
73
+
74
+ def level=(level)
75
+ raise ArgumentError unless LEVELS.include?(level.to_s)
76
+ @level = level
77
+ end
78
+
79
+ def level(name = nil)
80
+ name ? LEVELS.index(name) <= LEVELS.index(@level) : @level
81
+ end
82
+
83
+ def trace(e, newline = nil)
84
+ msg = ["#{e.class}: #{e.message}", *e.backtrace].join("\n")
85
+ if debug?
86
+ tell_me(msg, nil, newline)
87
+ elsif @trace
88
+ STDERR.puts "#{msg}#{newline}"
89
+ end
90
+ end
91
+
92
+ def silence
93
+ old_level, @level = @level, "silent"
94
+ yield
95
+ ensure
96
+ @level = old_level
97
+ end
98
+
99
+ private
100
+
101
+ # valimism
102
+ def tell_me(msg, color = nil, newline = nil)
103
+ msg = word_wrap(msg) if newline.is_a?(Hash) && newline[:wrap]
104
+ if newline.nil?
105
+ @shell.say(msg, color)
106
+ else
107
+ @shell.say(msg, color, newline)
108
+ end
109
+ end
110
+
111
+ def strip_leading_spaces(text)
112
+ spaces = text[/\A\s+/, 0]
113
+ spaces ? text.gsub(/#{spaces}/, '') : text
114
+ end
115
+
116
+ def word_wrap(text, line_width = @shell.terminal_width)
117
+ strip_leading_spaces(text).split("\n").collect do |line|
118
+ line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line
119
+ end * "\n"
120
+ end
121
+ end
122
+
123
+ end
124
+ end
125
+
126
+
@@ -0,0 +1,4 @@
1
+ module Vimremote
2
+ VERSION = '1.0.2'
3
+ end
4
+
metadata ADDED
@@ -0,0 +1,283 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vimdo
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Zhao Cai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: vimrunner
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.18.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.18.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '2.13'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '2.13'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 10.0.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 10.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: hoe
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hoe-gemspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: hoe-git
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: hoe-version
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: hoe-bundler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: terminal-notifier-guard
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: growl
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ description: |-
210
+ Vimdo is a ruby gem to automate tasks with vim remote servers.
211
+ Predefined tasks include diff, merge, etc. You can define your own recipes
212
+ to run tasks with Vim. For example, you can define `DirDiff` recipe:
213
+
214
+ ```ruby
215
+ module VimDo
216
+ class CLI < Thor
217
+
218
+ desc "dirdiff", "directory diff in vim"
219
+ def dirdiff(from, to)
220
+ [from, to].each do |f|
221
+ unless File.directory?(f)
222
+ raise PathError "#{f} is not directory!"
223
+ end
224
+ end
225
+
226
+ from, to = [from, to].map {|f| File.expand_path(f) }
227
+ commands(%Q{exec 'DirDiff ' fnameescape("#{from}") fnameescape("#{to}")})
228
+ end
229
+
230
+ end
231
+ end
232
+
233
+ ```
234
+
235
+ Then run `vimdo dirdiff path/to/a path/to/b` from the command line or other tools
236
+ email:
237
+ - caizhaoff@gmail.com
238
+ executables:
239
+ - vimdo
240
+ extensions: []
241
+ extra_rdoc_files:
242
+ - History.txt
243
+ - Manifest.txt
244
+ files:
245
+ - Gemfile
246
+ - Gemfile.lock
247
+ - History.txt
248
+ - Manifest.txt
249
+ - README.md
250
+ - Rakefile
251
+ - bin/vimdo
252
+ - lib/vimdo.rb
253
+ - lib/vimdo/cli.rb
254
+ - lib/vimdo/friendly_error.rb
255
+ - lib/vimdo/ui.rb
256
+ - lib/vimdo/version.rb
257
+ homepage: http://zhaocai.github.com/vimdo
258
+ licenses:
259
+ - GPL-3
260
+ metadata: {}
261
+ post_install_message:
262
+ rdoc_options:
263
+ - --main
264
+ - README.md
265
+ require_paths:
266
+ - lib
267
+ required_ruby_version: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '>='
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ required_rubygems_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - '>='
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ requirements: []
278
+ rubyforge_project: vimdo
279
+ rubygems_version: 2.0.3
280
+ signing_key:
281
+ specification_version: 4
282
+ summary: Vimdo is a ruby gem to automate tasks with vim remote servers
283
+ test_files: []