[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/crdt 780478a090 39/44: Fix crdt--cycle-user bug with di
From: |
ELPA Syncer |
Subject: |
[elpa] externals/crdt 780478a090 39/44: Fix crdt--cycle-user bug with different buffer/window |
Date: |
Sat, 2 Jul 2022 22:57:35 -0400 (EDT) |
branch: externals/crdt
commit 780478a090bba3a5ce927db1ca7dcc3bd7a801f8
Author: Qiantan Hong <qhong@alum.mit.edu>
Commit: Qiantan Hong <qhong@alum.mit.edu>
Fix crdt--cycle-user bug with different buffer/window
---
crdt.el | 65 +++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 33 insertions(+), 32 deletions(-)
diff --git a/crdt.el b/crdt.el
index cfedcc59f3..baa79b2bbf 100644
--- a/crdt.el
+++ b/crdt.el
@@ -917,25 +917,22 @@ Directly return the user name under point if in the user
menu."
(crdt--read-user session)
(signal 'quit nil)))
-(defun crdt-goto-user (session user-id &optional noswitch)
- "Goto the cursor location of user with USER-ID in SESSION.
-If NOSWITCH is non-nil, don't switch window."
+(defun crdt-goto-user (session user-id)
+ "Goto the cursor location of user with USER-ID in SESSION."
(interactive (let ((session (crdt--read-session-maybe)))
(list session (crdt--read-user-maybe session))))
- (let ((crdt--session session))
+ (let ((crdt--session session)
+ (switch-window-function
+ (if (eq major-mode 'crdt-user-menu-mode)
#'switch-to-buffer-other-window #'switch-to-buffer)))
(if (eq user-id (crdt--session-local-id crdt--session))
- (unless noswitch
- (funcall (if (eq major-mode 'crdt-user-menu-mode)
- #'switch-to-buffer-other-window
- #'switch-to-buffer)
- (gethash (crdt--session-focused-buffer-name crdt--session)
(crdt--session-buffer-table crdt--session))))
+ (funcall switch-window-function
+ (gethash (crdt--session-focused-buffer-name crdt--session)
(crdt--session-buffer-table crdt--session)))
(unless
(cl-block nil
(let* ((metadata (or (gethash user-id (crdt--session-contact-table
crdt--session)) (cl-return)))
(buffer-name (or (crdt--contact-metadata-focus metadata)
(cl-return))))
(crdt--with-buffer-name-pull (buffer-name)
- (unless noswitch
- (switch-to-buffer-other-window (current-buffer)))
+ (funcall switch-window-function (current-buffer))
(ignore-errors (goto-char (overlay-start (car (gethash user-id
crdt--pseudo-cursor-table)))))
t)))
(message "Doesn't have position information for this user yet.")))))
@@ -955,27 +952,31 @@ When moving into/out of ourselves, push/pop a global
marker instead."
(unless crdt--session
(error "Not a CRDT shared buffer"))
(crdt--session-ensure-user-menu-buffer crdt--session)
- (let ((mark (point-marker)))
- (with-current-buffer (crdt--session-user-menu-buffer crdt--session)
- (when (= (point) (point-max))
- (forward-line -1))
- (when (eq (tabulated-list-get-id) (crdt--session-local-id crdt--session))
- (setf (crdt--session-my-location-marker crdt--session) mark)
- (add-to-history 'global-mark-ring mark global-mark-ring-max t))
- (if prev
- (unless (= (forward-line -1) 0)
- (goto-char (point-max))
- (forward-line -1))
- (forward-line)
- (when (= (point) (point-max))
- (goto-char (point-min))))
- (let ((window (get-buffer-window (current-buffer) t)))
- (when window (set-window-point window (point))))
- (if (eq (tabulated-list-get-id) (crdt--session-local-id crdt--session))
- (if (eq (car global-mark-ring) (crdt--session-my-location-marker
crdt--session))
- (pop-global-mark)
- (goto-char (crdt--session-my-location-marker crdt--session)))
- (crdt-goto-user crdt--session (tabulated-list-get-id) t)))))
+ (let* ((mark (point-marker))
+ (user-id
+ (with-current-buffer (crdt--session-user-menu-buffer crdt--session)
+ (when (= (point) (point-max))
+ (forward-line -1))
+ (when (eq (tabulated-list-get-id) (crdt--session-local-id
crdt--session))
+ (setf (crdt--session-my-location-marker crdt--session) mark)
+ (add-to-history 'global-mark-ring mark global-mark-ring-max t))
+ (if prev
+ (unless (= (forward-line -1) 0)
+ (goto-char (point-max))
+ (forward-line -1))
+ (forward-line)
+ (when (= (point) (point-max))
+ (goto-char (point-min))))
+ (let ((window (get-buffer-window (current-buffer) t)))
+ (when window (set-window-point window (point))))
+ (if (eq (tabulated-list-get-id) (crdt--session-local-id
crdt--session))
+ (when (crdt--session-my-location-marker crdt--session)
+ (if (eq (car global-mark-ring)
(crdt--session-my-location-marker crdt--session))
+ (pop-global-mark)
+ (goto-char (crdt--session-my-location-marker
crdt--session)))
+ nil)
+ (tabulated-list-get-id)))))
+ (when user-id (crdt-goto-user crdt--session user-id))))
(defun crdt-goto-next-user ()
"Move point in user menu buffer to next user and goto its cursor position.
- [elpa] externals/crdt 5e67684793 20/44: fix bug of hanging data buffer when CRDT--READ-SETTINGS errors, (continued)
- [elpa] externals/crdt 5e67684793 20/44: fix bug of hanging data buffer when CRDT--READ-SETTINGS errors, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt e06e6e7236 21/44: add history support for CRDT-READ-SETTINGS, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt fae016ba25 08/44: Preliminary url support, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 28c5f6bd0e 27/44: Also `crdt--refresh-users-maybe' when `crdt-stop-follow', ELPA Syncer, 2022/07/02
- [elpa] externals/crdt f81f5297fa 28/44: Improve naming for user and buffer list, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 0743dd15f0 29/44: change `crdt--session-name' to `crdt--session-urlstr', ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 9f83928758 32/44: Merge branch 'master' into development, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 7548a9420e 33/44: :name->:urlstr, and fix TLS downgrade, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 01551d66c9 34/44: Fix default theme bug and other bugs., ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 949f4a1afd 37/44: reflect key binding addition in README.org, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 780478a090 39/44: Fix crdt--cycle-user bug with different buffer/window,
ELPA Syncer <=
- [elpa] externals/crdt df8954b9c3 40/44: feat: Option to put tuntox password in copied URL, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 72e2b8be12 42/44: Merge branch 'master' into development, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 3883736730 17/44: many changes, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt e2b6c9ebf6 22/44: get sharing buffer from clients working, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 932566653e 23/44: TLS support by stunnel., ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 282c48c47c 44/44: Revise README, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 709059ff5e 13/44: fix disconnect warn condition, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 2bc5389ba9 26/44: add `crdt-author' to default tracked text properties, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 89e3a2699d 31/44: Capitalise “Session” buffer to follow new convention, ELPA Syncer, 2022/07/02
- [elpa] externals/crdt 1f1e309cd7 41/44: Merge branch 'tuntox-password-in-url' into 'master', ELPA Syncer, 2022/07/02