|
16 | 16 | from simple_websocket_server import WebSocket
|
17 | 17 | from simple_websocket_server import WebSocketServer
|
18 | 18 |
|
19 |
| -BUILD_VERSION = "v0.0.4" |
| 19 | +BUILD_VERSION = "v0.0.6" |
20 | 20 | TEMP_FILEPATH = os.path.join(tempfile.gettempdir(), "nvim-ghost.nvim.port")
|
21 | 21 | WINDOWS = os.name == "nt"
|
22 | 22 | LOCALHOST = "127.0.0.1" if WINDOWS else "localhost"
|
@@ -108,6 +108,8 @@ def __init__(self):
|
108 | 108 | }
|
109 | 109 | self.argument_handlers_nodata = {
|
110 | 110 | "--start-server": self._start,
|
| 111 | + "--nopersist": self._nopersist, |
| 112 | + "--persist": self._persist, |
111 | 113 | "--version": self._version,
|
112 | 114 | "--focus": self._focus,
|
113 | 115 | "--help": self._help,
|
@@ -146,6 +148,16 @@ def _start(self):
|
146 | 148 | global START_SERVER
|
147 | 149 | START_SERVER = True
|
148 | 150 |
|
| 151 | + def _persist(self): |
| 152 | + global PERSIST |
| 153 | + PERSIST = True |
| 154 | + self.server_requests.append("/persist") |
| 155 | + |
| 156 | + def _nopersist(self): |
| 157 | + global PERSIST |
| 158 | + PERSIST = False |
| 159 | + self.server_requests.append("/nopersist") |
| 160 | + |
149 | 161 | def _port(self, port: str):
|
150 | 162 | if not port.isdigit():
|
151 | 163 | sys.exit("Invalid port")
|
@@ -184,6 +196,8 @@ def do_GET(self):
|
184 | 196 | "/version": self._version_responder,
|
185 | 197 | "/exit": self._exit_responder,
|
186 | 198 | "/kill": self._exit_responder,
|
| 199 | + "/persist": self._persist_responder, |
| 200 | + "/nopersist": self._nopersist_responder, |
187 | 201 | "/is_ghost_binary": self._sanityCheck_responder,
|
188 | 202 | }
|
189 | 203 |
|
@@ -224,6 +238,22 @@ def _exit_responder(self):
|
224 | 238 | global RUNNING
|
225 | 239 | RUNNING = False
|
226 | 240 |
|
| 241 | + def _persist_responder(self): |
| 242 | + global PERSIST |
| 243 | + PERSIST = True |
| 244 | + self.send_response(200) |
| 245 | + self.send_header("Content-Type", "text/plain") |
| 246 | + self.end_headers() |
| 247 | + self.wfile.write(f"PERSIST={PERSIST}".encode("utf-8")) |
| 248 | + |
| 249 | + def _nopersist_responder(self): |
| 250 | + global PERSIST |
| 251 | + PERSIST = False |
| 252 | + self.send_response(200) |
| 253 | + self.send_header("Content-Type", "text/plain") |
| 254 | + self.end_headers() |
| 255 | + self.wfile.write(f"PERSIST={PERSIST}".encode("utf-8")) |
| 256 | + |
227 | 257 | def _sanityCheck_responder(self):
|
228 | 258 | self.send_response(200)
|
229 | 259 | self.send_header("Content-Type", "text/plain")
|
@@ -255,9 +285,10 @@ def _session_closed_responder(self, query_string):
|
255 | 285 | self.end_headers()
|
256 | 286 | self.wfile.write(address.encode("utf-8"))
|
257 | 287 | global WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS
|
258 |
| - for item in WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS[address]: |
259 |
| - item.close() |
260 |
| - del WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS[address] |
| 288 | + if WEBSOCKET_PER_BUFFER_PER_NEOVIM_ADDRESS.__contains__(address): |
| 289 | + for item in WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS[address]: |
| 290 | + item.close() |
| 291 | + del WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS[address] |
261 | 292 | if not PERSIST and len(WEBSOCKETS_PER_NEOVIM_SOCKET_ADDRESS) == 0:
|
262 | 293 | global RUNNING
|
263 | 294 | RUNNING = False
|
|
0 commit comments