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

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

[nongnu] elpa/sesman 163984c60e 059/100: Better handling of overlays and


From: ELPA Syncer
Subject: [nongnu] elpa/sesman 163984c60e 059/100: Better handling of overlays and sensor
Date: Tue, 28 Dec 2021 14:06:02 -0500 (EST)

branch: elpa/sesman
commit 163984c60e8b5abf41e8f90894af08187647663b
Author: Vitalie Spinu <spinuvit@gmail.com>
Commit: Vitalie Spinu <spinuvit@gmail.com>

    Better handling of overlays and sensor
---
 sesman-browser.el | 52 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 29 insertions(+), 23 deletions(-)

diff --git a/sesman-browser.el b/sesman-browser.el
index d8b3f868c7..6c873eba02 100644
--- a/sesman-browser.el
+++ b/sesman-browser.el
@@ -299,6 +299,17 @@ If NO-SWITCH is non-nil, only display the buffer."
               (sesman-browser-revert))))
         (buffer-list)))
 
+(defun sesman-browser--goto-stop (stop-value)
+  (let ((search t))
+    (goto-char (point-min))
+    (while search
+      (goto-char (next-single-char-property-change (point) :sesman-stop))
+      (if (eobp)
+          (progn (setq search nil)
+                 (goto-char (next-single-char-property-change (point-min) 
:sesman-stop)))
+        (when (equal (get-text-property (point) :sesman-stop) stop-value)
+          (setq search nil))))))
+
 (defun sesman-browser-toggle-sort ()
   "Toggle sorting of sessions.
 See `sesman-browser-sort-type' for the default sorting type."
@@ -311,15 +322,8 @@ See `sesman-browser-sort-type' for the default sorting 
type."
   (setq sesman-browser-sort-type (pop sesman-browser--sort-types))
   (let ((stop (sesman-browser-get :sesman-stop nil 'lax)))
     (sesman-browser)
-    (goto-char (point-min))
-    (let ((search t))
-      (while search
-        (goto-char (next-single-char-property-change (point) :sesman-stop))
-        (if (eobp)
-            (progn (setq search nil)
-                   (goto-char (next-single-char-property-change (point-min) 
:sesman-stop)))
-          (when (equal (get-text-property (point) :sesman-stop) stop)
-            (setq search nil))))))
+    (sesman-browser--goto-stop stop)
+    (sesman-browser--sensor-function))
   (message "Sorted by %s"
            (propertize (symbol-name sesman-browser-sort-type) 'face 'bold)))
 
@@ -327,7 +331,16 @@ See `sesman-browser-sort-type' for the default sorting 
type."
   "Interactive view of Sesman sessions."
   ;; ensure there is a sesman-system here
   (sesman--system)
+  (delete-all-overlays)
+  (setq-local sesman-browser--stop-overlay (make-overlay (point) (point)))
+  (overlay-put sesman-browser--stop-overlay 'face 'sesman-browser-highligh)
+  (setq-local sesman-browser--section-overlay (make-overlay (point) (point)))
+  (when window-system
+    (let* ((fringe-spec '(left-fringe sesman-left-bar sesman-browser-highligh))
+           (dummy-string (propertize "|" 'display fringe-spec)))
+      (overlay-put sesman-browser--section-overlay 'line-prefix dummy-string)))
   (add-hook 'sesman-post-command-hook 'sesman-browser-revert nil t)
+  (setq-local display-buffer-base-action '(nil . ((inhibit-same-window . t))))
   (setq-local sesman-browser--sort-types (default-value 
'sesman-browser--sort-types))
   (setq-local revert-buffer-function #'sesman-browser-revert))
 
@@ -411,9 +424,11 @@ See `sesman-browser-sort-type' for the default sorting 
type."
   "Display an interactive session browser."
   (interactive)
   (let* ((system (sesman--system))
+         (pop-to (called-interactively-p 'any))
          (sessions (sesman-sessions system))
-         (buff (get-buffer-create (format "*sesman %s browser*" system)))
-         (pop-to (called-interactively-p 'any)))
+         (cur-session (when pop-to
+                        (sesman-current-session 'CIDER)))
+         (buff (get-buffer-create (format "*sesman %s browser*" system))))
     (with-current-buffer buff
       (setq-local sesman-system system)
       (sesman-browser-mode)
@@ -431,18 +446,9 @@ See `sesman-browser-sort-type' for the default sorting 
type."
           (setq i (1+ i))
           (sesman-browser--insert-session system ses i))
         (when pop-to
-          (pop-to-buffer buff))
-        (let ((dummy-string  (ess-tracebug--propertize "|" 'sesman-left-bar
-                                                       
'font-lock-keyword-face)))
-          (goto-char (next-single-property-change (point-min) :sesman-stop))
-          (setq-local sesman-browser--stop-overlay
-                      (make-overlay (point) (next-single-property-change 
(point) :sesman-stop)))
-          (overlay-put sesman-browser--stop-overlay 'face 
'sesman-browser-highligh)
-          (when window-system
-            (setq-local sesman-browser--section-overlay
-                        (make-overlay (get-text-property (point) 
:sesman-fragment-beg)
-                                      (get-text-property (point) 
:sesman-fragment-end)))
-            (overlay-put sesman-browser--section-overlay 'line-prefix 
dummy-string)))))))
+          (pop-to-buffer buff)
+          (sesman-browser--goto-stop (car cur-session)))
+        (sesman-browser--sensor-function)))))
 
 (provide 'sesman-browser)
 



reply via email to

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