vimrunner 0.3.0 → 0.3.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 909bbbe33a49a9bab23bc10ac3dd7be7a651e45a
4
+ data.tar.gz: 481ed70f35cb0553c30cd640bd35b8219c2b2ac6
5
+ SHA512:
6
+ metadata.gz: db74708c88bbf8469fec2208ce52fc2dff56a032e4c38c8ab3f1577875047de6b02f2b997d062eb68de1c0e7290b9b457194f6cdfb33322bf6217c4579cf71fd
7
+ data.tar.gz: ab74da6d7d93ad25a30ddcdf16da44e58a10c48b3ad1bf4bad6262801d855646d47b1f23a792cb7ccbfee279242088f47af4d30b4f758a90d603cbeb43d14f49
data/README.md CHANGED
@@ -6,6 +6,9 @@ functionality, this library exposes a way to spawn a Vim instance and control
6
6
  it programatically. Apart from being a fun party trick, this can be used to do
7
7
  integration testing on Vimscript.
8
8
 
9
+ The latest stable documentation can be found
10
+ [on rubydoc.info](http://rubydoc.info/gems/vimrunner/frames).
11
+
9
12
  This is still fairly experimental, so use with caution. Any issue reports or
10
13
  contributions are very welcome on the
11
14
  [GitHub issue tracker](https://github.com/AndrewRadev/Vimrunner/issues).
@@ -64,8 +67,8 @@ examples.)
64
67
 
65
68
  Calling `start` (or `start_gvim`) will return a `Client` instance with which
66
69
  you can control Vim. For a full list of methods you can invoke on the remote
67
- Vim instance, check out the [`Client`
68
- documentation](http://rubydoc.info/gems/vimrunner/Vimrunner/Client).
70
+ Vim instance, check out the `Client`
71
+ [documentation](http://rubydoc.info/gems/vimrunner/Vimrunner/Client).
69
72
 
70
73
  If you already have a remote-capable Vim server running, you can connect
71
74
  Vimrunner to it directly by using `Vimrunner.connect` or `Vimrunner.connect!`
@@ -110,7 +113,7 @@ Vimrunner::RSpec.configure do |config|
110
113
  # vim = Vimrunner.start_gvim
111
114
 
112
115
  # Setup your plugin in the Vim instance
113
- plugin_path = File.expand_path('.')
116
+ plugin_path = File.expand_path('../..', __FILE__)
114
117
  vim.add_plugin(plugin_path, 'plugin/my_plugin.vim')
115
118
 
116
119
  # The returned value is the Client available in the tests.
@@ -1,3 +1,6 @@
1
+ require "vimrunner/path"
2
+ require "vimrunner/command"
3
+
1
4
  module Vimrunner
2
5
  class Client
3
6
  attr_reader :server
@@ -22,7 +25,10 @@ module Vimrunner
22
25
  # Returns nothing.
23
26
  def add_plugin(dir, entry_script = nil)
24
27
  append_runtimepath(dir)
25
- command("runtime #{entry_script}") if entry_script
28
+ if entry_script
29
+ entry_script_path = Path.new(entry_script)
30
+ command("runtime #{entry_script_path}")
31
+ end
26
32
  end
27
33
 
28
34
  # Public: source a script in Vim server
@@ -35,7 +41,8 @@ module Vimrunner
35
41
  #
36
42
  # Returns nothing.
37
43
  def source(script)
38
- feedkeys(":\\<C-u>source #{escape_filename(script)}\\<CR>")
44
+ script_path = Path.new(script)
45
+ feedkeys(":\\<C-u>source #{script_path}\\<CR>")
39
46
  end
40
47
 
41
48
  # Public: Appends a directory to Vim's runtimepath
@@ -44,7 +51,8 @@ module Vimrunner
44
51
  #
45
52
  # Returns nothing.
46
53
  def append_runtimepath(dir)
47
- command("set runtimepath+=#{dir}")
54
+ dir_path = Path.new(dir)
55
+ command("set runtimepath+=#{dir_path}")
48
56
  end
49
57
 
50
58
  # Public: Prepends a directory to Vim's runtimepath. Use this instead of
@@ -55,8 +63,9 @@ module Vimrunner
55
63
  #
56
64
  # Returns nothing.
57
65
  def prepend_runtimepath(dir)
58
- runtimepath = echo '&runtimepath'
59
- command("set runtimepath=#{dir},#{runtimepath}")
66
+ dir_path = Path.new(dir)
67
+ runtimepath = Path.new(echo('&runtimepath'))
68
+ command("set runtimepath=#{dir_path},#{runtimepath}")
60
69
  end
61
70
 
62
71
  # Public: Switches Vim to normal mode and types in the given keys.
@@ -157,7 +166,8 @@ module Vimrunner
157
166
  #
158
167
  # Returns the Client instance.
159
168
  def edit(filename)
160
- command "edit #{escape_filename(filename)}"
169
+ file_path = Path.new(filename)
170
+ command "edit #{file_path}"
161
171
  self
162
172
  end
163
173
 
@@ -167,7 +177,8 @@ module Vimrunner
167
177
  #
168
178
  # Returns the Client instance.
169
179
  def edit!(filename)
170
- command "edit! #{escape_filename(filename)}"
180
+ file_path = Path.new(filename)
181
+ command "edit! #{file_path}"
171
182
  self
172
183
  end
173
184
 
@@ -177,8 +188,9 @@ module Vimrunner
177
188
  # Returns the String output.
178
189
  # Raises InvalidCommandError if the command is not recognised by vim.
179
190
  def command(commands)
180
- server.remote_expr("VimrunnerEvaluateCommandOutput('#{escape_single_quote(commands)}')").tap do |output|
181
- raise InvalidCommandError.new(output) if output =~ /^Vim:E\d+:/
191
+ command = Command.new(commands)
192
+ server.remote_expr("VimrunnerEvaluateCommandOutput('#{command}')").tap do |output|
193
+ raise InvalidCommandError.new(output) if output =~ /^Vim(\(call\))?:E\d+:/
182
194
  end
183
195
  end
184
196
 
@@ -187,14 +199,9 @@ module Vimrunner
187
199
  server.kill
188
200
  end
189
201
 
190
- private
191
-
192
- def escape_filename(name)
193
- name.gsub(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
194
- end
195
-
196
- def escape_single_quote(string)
197
- string.to_s.gsub("'", "''")
202
+ # Bring the server to foreground
203
+ def foreground
204
+ server.remote_expr("foreground()")
198
205
  end
199
206
  end
200
207
  end
@@ -0,0 +1,11 @@
1
+ module Vimrunner
2
+ class Command
3
+ def initialize(command)
4
+ @command = command
5
+ end
6
+
7
+ def to_s
8
+ @command.to_s.gsub("'", "''")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Vimrunner
2
+ class Path
3
+ def initialize(path)
4
+ @path = path
5
+ end
6
+
7
+ def to_s
8
+ @path.to_s.gsub(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
9
+ end
10
+ end
11
+ end
@@ -13,13 +13,13 @@ module Vimrunner
13
13
  # an existing Vim instance, it can control that instance without the need to
14
14
  # start a new process.
15
15
  #
16
- # A Client would be necessary as there's a ctual interface, though it is possible
16
+ # A Client would be necessary as an actual interface, though it is possible
17
17
  # to use a Server directly to invoke --remote commands on its Vim instance.
18
18
  class Server
19
19
  VIMRC = File.expand_path("../../../vim/vimrc", __FILE__)
20
20
  VIMRUNNER_RC = File.expand_path("../../../vim/vimrunner_rc", __FILE__)
21
21
 
22
- attr_reader :name, :executable, :vimrc
22
+ attr_reader :name, :executable, :vimrc, :gvimrc
23
23
 
24
24
  # Public: Initialize a Server
25
25
  #
@@ -35,8 +35,9 @@ module Vimrunner
35
35
  #
36
36
  def initialize(options = {})
37
37
  @executable = options.fetch(:executable) { Platform.vim }
38
- @name = options.fetch(:name) { "VIMRUNNER#{rand}" }
38
+ @name = options.fetch(:name) { "VIMRUNNER#{rand}" }.upcase
39
39
  @vimrc = options.fetch(:vimrc) { VIMRC }
40
+ @gvimrc = options.fetch(:gvimrc) { "NONE" }
40
41
  @foreground = options.fetch(:foreground, true)
41
42
  end
42
43
 
@@ -149,7 +150,7 @@ module Vimrunner
149
150
  end
150
151
 
151
152
  # Public: Sends the given keys
152
- # A wrapper around --remote-expr.
153
+ # A wrapper around --remote-send.
153
154
  #
154
155
  # keys - a String with a sequence of Vim-compatible keystrokes.
155
156
  #
@@ -169,7 +170,9 @@ module Vimrunner
169
170
  end
170
171
 
171
172
  def spawn
172
- PTY.spawn("#{executable} #{foreground_option} --servername #{name} -u #{vimrc}")
173
+ PTY.spawn(executable, *%W[
174
+ #{foreground_option} --servername #{name} -u #{vimrc} -U #{gvimrc}
175
+ ])
173
176
  end
174
177
 
175
178
  def wait_until_running(seconds)
@@ -1,3 +1,3 @@
1
1
  module Vimrunner
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
data/vim/vimrc CHANGED
@@ -9,5 +9,3 @@ set noswapfile nobackup
9
9
  " remove default ~/.vim directories to avoid loading plugins
10
10
  set runtimepath-=~/.vim
11
11
  set runtimepath-=~/.vim/after
12
-
13
- execute "source " . expand('<sfile>:p:h') . "/vimrunner_rc"
@@ -24,6 +24,7 @@ else
24
24
  function! VimrunnerEvaluateCommandOutput(command)
25
25
  let base_command = split(a:command, '\s\+')[0]
26
26
  let base_command = substitute(base_command, '!$', '', '')
27
+ let base_command = substitute(base_command, '^\d\+', '', '')
27
28
 
28
29
  if !exists(':'.base_command)
29
30
  let output = 'Vim:E492: Not an editor command: '.base_command
metadata CHANGED
@@ -1,83 +1,76 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimrunner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.3.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andrew Radev
8
+ - Paul Mucur
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-21 00:00:00.000000000 Z
12
+ date: 2014-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
- - - ! '>='
18
+ - - ">="
20
19
  - !ruby/object:Gem::Version
21
20
  version: '0'
22
21
  type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
- - - ! '>='
25
+ - - ">="
28
26
  - !ruby/object:Gem::Version
29
27
  version: '0'
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: rdoc
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ! '>='
32
+ - - ">="
36
33
  - !ruby/object:Gem::Version
37
34
  version: '0'
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
- - - ! '>='
39
+ - - ">="
44
40
  - !ruby/object:Gem::Version
45
41
  version: '0'
46
42
  - !ruby/object:Gem::Dependency
47
43
  name: simplecov
48
44
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
- - - ! '>='
46
+ - - ">="
52
47
  - !ruby/object:Gem::Version
53
48
  version: '0'
54
49
  type: :development
55
50
  prerelease: false
56
51
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
- - - ! '>='
53
+ - - ">="
60
54
  - !ruby/object:Gem::Version
61
55
  version: '0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: rspec
64
58
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
- - - ! '>='
60
+ - - ">="
68
61
  - !ruby/object:Gem::Version
69
62
  version: 2.13.0
70
63
  type: :development
71
64
  prerelease: false
72
65
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
- - - ! '>='
67
+ - - ">="
76
68
  - !ruby/object:Gem::Version
77
69
  version: 2.13.0
78
- description: ! " Using Vim's client/server functionality, this library exposes
79
- a way to\n spawn a Vim instance and control it programatically. Apart from being
80
- a fun\n party trick, this can be used to integration test Vim script.\n"
70
+ description: |2
71
+ Using Vim's client/server functionality, this library exposes a way to
72
+ spawn a Vim instance and control it programatically. Apart from being a fun
73
+ party trick, this can be used to integration test Vim script.
81
74
  email:
82
75
  - andrey.radev@gmail.com
83
76
  executables:
@@ -85,44 +78,42 @@ executables:
85
78
  extensions: []
86
79
  extra_rdoc_files: []
87
80
  files:
81
+ - LICENSE
82
+ - README.md
83
+ - bin/vimrunner
88
84
  - lib/vimrunner.rb
89
85
  - lib/vimrunner/client.rb
90
- - lib/vimrunner/testing.rb
91
- - lib/vimrunner/rspec.rb
86
+ - lib/vimrunner/command.rb
92
87
  - lib/vimrunner/errors.rb
93
- - lib/vimrunner/version.rb
94
- - lib/vimrunner/server.rb
88
+ - lib/vimrunner/path.rb
95
89
  - lib/vimrunner/platform.rb
96
- - vim/vimrunner_rc
90
+ - lib/vimrunner/rspec.rb
91
+ - lib/vimrunner/server.rb
92
+ - lib/vimrunner/testing.rb
93
+ - lib/vimrunner/version.rb
97
94
  - vim/vimrc
98
- - bin/vimrunner
99
- - LICENSE
100
- - README.md
95
+ - vim/vimrunner_rc
101
96
  homepage: http://github.com/AndrewRadev/vimrunner
102
97
  licenses: []
98
+ metadata: {}
103
99
  post_install_message:
104
100
  rdoc_options: []
105
101
  require_paths:
106
102
  - lib
107
103
  required_ruby_version: !ruby/object:Gem::Requirement
108
- none: false
109
104
  requirements:
110
- - - ! '>='
105
+ - - ">="
111
106
  - !ruby/object:Gem::Version
112
107
  version: '0'
113
- segments:
114
- - 0
115
- hash: -1164770989909868074
116
108
  required_rubygems_version: !ruby/object:Gem::Requirement
117
- none: false
118
109
  requirements:
119
- - - ! '>='
110
+ - - ">="
120
111
  - !ruby/object:Gem::Version
121
112
  version: 1.3.6
122
113
  requirements: []
123
114
  rubyforge_project: vimrunner
124
- rubygems_version: 1.8.24
115
+ rubygems_version: 2.2.0
125
116
  signing_key:
126
- specification_version: 3
117
+ specification_version: 4
127
118
  summary: Lets you control a Vim instance through Ruby
128
119
  test_files: []