class Torkify::Vim::Remote

Public Class Methods

from_first_server() click to toggle source
# File lib/torkify/vim/remote.rb, line 12
def self.from_first_server
  servers = self.servers
  if servers.any?
    new(self.servers.first)
  else
    raise RemoteError, "No vim servers are available"
  end
end
new(servername) click to toggle source
# File lib/torkify/vim/remote.rb, line 21
def initialize(servername)
  Torkify.logger.debug { "[vim] using remote vim server #{servername}" }
  @servername = servername
  ping
end
servers() click to toggle source
# File lib/torkify/vim/remote.rb, line 8
def self.servers
  `vim --serverlist`.split("\n")
end

Public Instance Methods

expr(expression) click to toggle source
# File lib/torkify/vim/remote.rb, line 31
def expr(expression)
  exec('expr', expression)
end
send(keys) click to toggle source
# File lib/torkify/vim/remote.rb, line 27
def send(keys)
  exec('send', keys)
end

Protected Instance Methods

exec(remote_command, argument) click to toggle source
# File lib/torkify/vim/remote.rb, line 36
def exec(remote_command, argument)
  cmd = "vim --servername #{@servername}"
  cmd << " --remote-#{remote_command}"
  cmd << " #{Shellwords.escape(argument)} 2>&1"
  Torkify.logger.debug { "[vim] sending remote command: #{cmd}" }
  parse_output(`#{cmd}`)
end
parse_output(output) click to toggle source
# File lib/torkify/vim/remote.rb, line 44
def parse_output(output)
  output = output.strip
  Torkify.logger.debug { "[vim] output from command: #{output}" }
  if output =~ /^E\d+:/
    raise RemoteError, output
  else
    output
  end
end
ping() click to toggle source
# File lib/torkify/vim/remote.rb, line 54
def ping
  expr("winnr()")
end