@@ -319,23 +319,30 @@ def start():
319319global _vim_server
320320global _nvim_server
321321
322- if not has_unix :
323- _vim_server = ThreadedTCPServer (("127.0.0.1" ,0 ),VimHandler )
322+ _vim_server = ThreadedTCPServer (("127.0.0.1" ,0 ),VimHandler )
323+ _vim_server .daemon_threads = True
324+ vim_server_addr = "{addr[0]}:{addr[1]}" .format (addr = _vim_server .server_address )
325+
326+ if 'NVIM_LISTEN_ADDRESS' in os .environ :
327+ nvim_server_addr = os .environ ['NVIM_LISTEN_ADDRESS' ]
328+ if nvim_server_addr .find (':' )>= 0 :
329+ host ,port = nvim_server_addr .split (':' )
330+ port = int (port )
331+ _nvim_server = ThreadedTCPServer ((host ,port ),NvimHandler )
332+ else :
333+ if os .path .exists (nvim_server_addr ):
334+ try :
335+ os .unlink (nvim_server_addr )
336+ except :
337+ pass
338+ _nvim_server = ThreadedUnixServer (nvim_server_addr ,NvimHandler )
339+ elif not has_unix :
324340_nvim_server = ThreadedTCPServer (("127.0.0.1" ,0 ),NvimHandler )
325- _vim_server .daemon_threads = True
326- _nvim_server .daemon_threads = True
327-
328341nvim_server_addr = "{addr[0]}:{addr[1]}" .format (addr = _nvim_server .server_address )
329- vim_server_addr = "{addr[0]}:{addr[1]}" .format (addr = _vim_server .server_address )
330342else :
331343nvim_server_addr = vim .eval ('tempname()' )
332-
333- _vim_server = ThreadedTCPServer (("127.0.0.1" ,0 ),VimHandler )
334344_nvim_server = ThreadedUnixServer (nvim_server_addr ,NvimHandler )
335- _vim_server .daemon_threads = True
336- _nvim_server .daemon_threads = True
337-
338- vim_server_addr = "{addr[0]}:{addr[1]}" .format (addr = _vim_server .server_address )
345+ _nvim_server .daemon_threads = True
339346
340347# Start a thread with the server -- that thread will then start one
341348# more thread for each request