Class: Editserver::Vim

Inherits:
Editor
  • Object
show all
Defined in:
lib/editserver/terminal/vim.rb

Instance Method Summary collapse

Methods inherited from Editor

define_editor, terminal, #terminal, terminal=

Instance Method Details

#edit(file) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/editserver/terminal/vim.rb', line 17

def edit file
  if terminal.nil?
    File.open(file, 'w') { |f| f.write 'No terminal defined!' }
  else
    start_server unless server_available?
    super
  end
end

#server_available?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/editserver/terminal/vim.rb', line 7

def server_available?
  %x(vim --serverlist).split("\n").map { |l| l.strip.upcase }.include? 'EDITSERVER'
end

#start_serverObject



11
12
13
14
15
# File 'lib/editserver/terminal/vim.rb', line 11

def start_server
  pid = fork { exec *(terminal + %w[-e vim --servername EDITSERVER]) }
  sleep 2 # HACK: a moment to initialize before returning
  Process.detach pid
end