mark-naylor-1701

repack-group-numbers

Jul 28th, 2025
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.83 KB | Source Code | 0 0
  1. (defcommand repack-group-numbers (&optional preserved) ()
  2.   "Ensure that used group numbers do not have gaps; ignore PRESERVED group numbers."
  3.   (let ((groups (remove-if
  4.                  (lambda (x) (member (group-number x) preserved))
  5.                  (sort1 (screen-groups (current-screen))
  6.                         #'<
  7.                         :key #'group-number))))
  8.     (labels
  9.         ((repack (&optional items (idx 1))
  10.            (cond
  11.             ((null items)
  12.              nil)
  13.  
  14.             ((= idx (group-number (car items)))
  15.              (repack (cdr items) (1+ idx)))
  16.  
  17.             ((member idx (mapcar #'group-number groups))
  18.              (repack items (1+ idx)))
  19.  
  20.             (t (progn
  21.                  (setf (group-number (car items)) idx)
  22.                  (repack (cdr items) (1+ idx)))))))
  23.  
  24.       (repack groups))))
Advertisement
Add Comment
Please, Sign In to add comment