emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/crdt f3e59a4 13/80: usability


From: ELPA Syncer
Subject: [elpa] externals/crdt f3e59a4 13/80: usability
Date: Sat, 28 Aug 2021 10:57:32 -0400 (EDT)

branch: externals/crdt
commit f3e59a418b025094aa506eb27cc0b765af3ff67f
Author: Qiantan Hong <qhong@mit.edu>
Commit: Qiantan Hong <qhong@mit.edu>

    usability
---
 crdt.el | 59 +++++++++++++++++++++++++++++++----------------------------
 1 file changed, 31 insertions(+), 28 deletions(-)

diff --git a/crdt.el b/crdt.el
index 0aceb5e..5eb534a 100644
--- a/crdt.el
+++ b/crdt.el
@@ -1259,7 +1259,7 @@ If SESSION-NAME is empty, use the buffer name of the 
current buffer."
     (let ((session (assoc session-name crdt--session-alist)))
       (if session
           (crdt--share-buffer (current-buffer) (cdr session))
-        (let ((port (read-from-minibuffer "Create new session on Port (default 
1333): " nil nil t nil "1333")))
+        (let ((port (read-from-minibuffer "Create new session on port (default 
6530): " nil nil t nil "6530")))
           (crdt--share-buffer (current-buffer) (crdt-new-session port 
session-name)))))))
 
 (defun crdt-stop-share-buffer ()
@@ -1312,34 +1312,37 @@ If SESSION-NAME is empty, use the buffer name of the 
current buffer."
     (push (cons session-name new-session) crdt--session-alist)
     new-session))
 
-(defun crdt-stop-session ()
+(defun crdt-stop-session (session-name)
   "Stop sharing the current session."
-  (interactive)
-  (if (not crdt--status-buffer)
-      (message "No CRDT session running on current buffer.")
-    (let ((status-buffer crdt--status-buffer))
-      (with-current-buffer status-buffer
-        (dolist (client crdt--network-clients)
-          (when (process-live-p client)
-            (delete-process client))
-          (when (process-buffer client)
-            (kill-buffer (process-buffer client))))
-        (when crdt--user-menu-buffer
-          (kill-buffer crdt--user-menu-buffer))
-        (maphash
-         (lambda (k v)
-           (with-current-buffer v
-             (setq crdt--status-buffer nil)
-             (crdt-mode 0)))
-         crdt--buffer-table)
-        (setq crdt--session-alist
-              (delq (cl-find-if (lambda (p) (eq (cdr p) crdt--network-process))
-                                crdt--session-alist)
-                    crdt--session-alist))
-        (crdt--refresh-sessions-maybe)
-        (delete-process crdt--network-process)
-        (message "Disconnected."))
-      (kill-buffer status-buffer))))
+  (interactive
+   (list (completing-read "Choose a session (create if not exist): "
+                          crdt--session-alist nil t
+                          (when crdt--status-buffer
+                            (car (rassq (crdt--network-process) 
crdt--session-alist))))))
+  (let ((status-buffer
+         (process-get (cdr (assoc session-name crdt--session-alist)) 
'status-buffer)))
+    (with-current-buffer status-buffer
+      (dolist (client crdt--network-clients)
+        (when (process-live-p client)
+          (delete-process client))
+        (when (process-buffer client)
+          (kill-buffer (process-buffer client))))
+      (when crdt--user-menu-buffer
+        (kill-buffer crdt--user-menu-buffer))
+      (maphash
+       (lambda (k v)
+         (with-current-buffer v
+           (setq crdt--status-buffer nil)
+           (crdt-mode 0)))
+       crdt--buffer-table)
+      (setq crdt--session-alist
+            (delq (cl-find-if (lambda (p) (eq (cdr p) crdt--network-process))
+                              crdt--session-alist)
+                  crdt--session-alist))
+      (crdt--refresh-sessions-maybe)
+      (delete-process crdt--network-process)
+      (message "Disconnected."))
+    (kill-buffer status-buffer)))
 
 (defun crdt-connect (address port &optional name)
   "Connect to a CRDT server running at ADDRESS:PORT.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]