[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/sesman 0f6eadfb1a 004/100: Idem
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/sesman 0f6eadfb1a 004/100: Idem |
Date: |
Tue, 28 Dec 2021 14:05:58 -0500 (EST) |
branch: elpa/sesman
commit 0f6eadfb1a79acd7a242842b44de363822df5c62
Author: Vitalie Spinu <spinuvit@gmail.com>
Commit: Vitalie Spinu <spinuvit@gmail.com>
Idem
---
sesman.el | 64 ++++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 37 insertions(+), 27 deletions(-)
diff --git a/sesman.el b/sesman.el
index f577c38a83..655bc1da98 100644
--- a/sesman.el
+++ b/sesman.el
@@ -61,21 +61,17 @@ Each element is of the form (key cxt-type cxt-value) where
(defun sesman-start ()
"Start sesman session."
(interactive)
- (let* ((system (sesman--system))
- (session (sesman-start-session system)))
- (sesman-register system session)
- (message "Started %s" (car session))))
+ (let* ((system (sesman--system)))
+ (message "Starting new %s session ..." system)
+ (sesman-start-session system)))
(defun sesman-restart ()
"Restart sesman session."
(interactive)
(let* ((system (sesman--system))
- (old-session (sesman-ensure-session system "Restart session: "))
- (old-session (sesman-unregister system old-session))
- (new-session (sesman-restart-session system old-session)))
- (sesman-register system new-session)
- (message "Restarted %s" (car old-session))
- new-session))
+ (old-session (sesman-ensure-session system "Restart session: ")))
+ (message "Restarting %s '%s' session" system (car old-session))
+ (sesman-restart-session system old-session)))
(defun sesman-quit (all)
"Terminate sesman session.
@@ -92,7 +88,10 @@ double universal argument, t or 'all, kill all sessions."
(sesman-unregister system s)
(sesman-quit-session system s))
sessions)
- (message "Killed %s" (mapcar #'car sessions)))))
+ (message
+ "Killed %s %s %s" system
+ (if (= 1 (length sessions)) "session" "sessions")
+ (mapcar #'car sessions)))))
(defun sesman-info (which)
"Display current session info.
@@ -103,7 +102,7 @@ sessions."
(interactive "P")
(let* ((system (sesman--system))
(sessions (sesman--on-C-u-u-sessions
- system "Info for session: : " all)))
+ system "Info for session: : " which)))
(message
(mapconcat (lambda (ses)
(format "%s:\n%s"
@@ -144,8 +143,6 @@ sessions."
(define-key sesman-map (kbd "s") 'sesman-start)
(define-key sesman-map (kbd "C-r") 'sesman-restart)
(define-key sesman-map (kbd "r") 'sesman-restart)
- (define-key sesman-map (kbd "C-R") 'sesman-replicate)
- (define-key sesman-map (kbd "R") 'sesman-replicate)
(define-key sesman-map (kbd "C-q") 'sesman-quit)
(define-key sesman-map (kbd "q") 'sesman-quit)
(define-key sesman-map (kbd "C-b") 'sesman-link-with-buffer)
@@ -179,8 +176,7 @@ By default, calls `sesman-quit-session' and then
(let ((old-name (car session)))
(sesman-quit-session system session)
(let ((new-session (sesman-start-session system)))
- (setcar new-session old-name)
- new-session)))
+ (setcar new-session old-name))))
(cl-defgeneric sesman-session-info (system session)
(cdr session))
@@ -320,29 +316,40 @@ SYSTEM defaults to current system. Remove session from
(sesman--clear-links)
session))
-(defun sesman-add-object (system session-name object)
- "Add (destructively) OBJECT to session SESSION-NAME.
-SYSTEM defaults to the system in the current buffer. If
-SESSION-NAME, does not exist create one first."
+(defun sesman-add-object (system session-name object &optional allow-new)
+ "Add (destructively) OBJECT to session SESSION-NAME of SYSTEM.
+If ALLOW-NEW is nil and session with SESSION-NAME does not exist
+throw an error, otherwise register a new session with
+session (list SESSION-NAME OBJECT)."
(let* ((system (or system (sesman--system)))
(session (sesman-get-session system session-name)))
(if session
(setcdr session (cons object (cdr session)))
- (sesman-register system (list session-name object)))))
+ (if allow-new
+ (sesman-register system (list session-name object))
+ (error "%s session '%s' does not exist."
+ (sesman--system-name system) session-name)))))
-(defun sesman-remove-object (system session-name object)
+(defun sesman-remove-object (system session-name object &optional
auto-unregister no-error)
"Remove (destructively) OBJECT from session SESSION-NAME of SYSTEM.
If SESSION-NAME is nil, retrieve the session with
`sesman-session-for-object'. If OBJECT is the last object in
-sesman session, `sesman-unregister' the session."
+sesman session, `sesman-unregister' the session. If
+AUTO-UNREGISTER is non-nil unregister sessions of length 0. If
+NO-ERROR is non-nil, don't throw an error if OBJECT is not found
+in any session. This is useful if there are several
+\"concurrent\" parties which can remove the object."
(let* ((system (or system (sesman--system)))
(session (if session-name
(sesman-get-session system session-name)
- (sesman-get-session-for-object system object)))
+ (sesman-get-session-for-object system object no-error)))
(new-session (delete object session)))
- (if (= (length new-session) 1)
- (sesman-unregister system session)
- (puthash (cons system (car session)) new-session sesman-sessions))))
+ (cond ((null new-session))
+ ((= (length new-session) 1)
+ (when auto-unregister
+ (sesman-unregister system session)))
+ (t
+ (puthash (cons system (car session)) new-session
sesman-sessions)))))
(defun sesman-get-session-for-object (system object &optional no-error)
(let* ((system (or system (sesman--system)))
@@ -354,6 +361,9 @@ sesman session, `sesman-unregister' the session."
(error "%s is not part of any %s sessions"
object system)))))
+(defun sesman-get-session-name-for-object (system object &optional no-error)
+ (car (sesman-get-session-for-object system object no-error)))
+
;;; Contexts
- [nongnu] branch elpa/sesman created (now e0f555f963), ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 6aa04521eb 012/100: Add badges, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 0f6eadfb1a 004/100: Idem,
ELPA Syncer <=
- [nongnu] elpa/sesman b27755c150 003/100: Major update before cider integration, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman e83fcfd939 002/100: Add readme, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 4f52cccf26 013/100: Update readme, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman fea061de16 007/100: Add sesman menu, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman a39f0e2c1b 015/100: Add commentary, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 13f7748b9f 017/100: Rename sesman-single-link-contexts -> sesman-single-link-context-types, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 0303d66f0e 019/100: Rename link accessors --link- -> --lnk- to avoid naming confusion, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 0f86bd3d34 021/100: Rename sesman-ensure-linked-session -> sesman-ensure-session, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman 43b0c9ef2a 026/100: [Fix #4] Rename lingering sesman-ensure-linked-session, ELPA Syncer, 2021/12/28
- [nongnu] elpa/sesman fb4d2784f3 025/100: Fix typo in README, ELPA Syncer, 2021/12/28