emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r113541: lisp/desktop.el: Use pcase-let, pcase-let*


From: Juanma Barranquero
Subject: [Emacs-diffs] trunk r113541: lisp/desktop.el: Use pcase-let, pcase-let* in a few places.
Date: Thu, 25 Jul 2013 09:24:34 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113541
revision-id: address@hidden
parent: address@hidden
committer: Juanma Barranquero <address@hidden>
branch nick: trunk
timestamp: Thu 2013-07-25 11:24:26 +0200
message:
  lisp/desktop.el: Use pcase-let, pcase-let* in a few places.
  (desktop--select-frame, desktop--sort-states, desktop-restore-frames):
  Deobfuscate access to desktop--mini values.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/desktop.el                desktop.el-20091113204419-o5vbwnq5f7feedwu-591
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-07-25 08:35:04 +0000
+++ b/lisp/ChangeLog    2013-07-25 09:24:26 +0000
@@ -5,6 +5,8 @@
        (desktop--filter-save-desktop-parm, desktop--process-minibuffer-frames)
        (desktop--select-frame, desktop--sort-states, desktop-restore-frames):
        Change accordingly.
+       (desktop--select-frame, desktop--sort-states, desktop-restore-frames):
+       Use pcase-let, pcase-let* to deobfuscate access to desktop--mini values.
 
 2013-07-25  Glenn Morris  <address@hidden>
 

=== modified file 'lisp/desktop.el'
--- a/lisp/desktop.el   2013-07-25 08:35:04 +0000
+++ b/lisp/desktop.el   2013-07-25 09:24:26 +0000
@@ -1228,33 +1228,34 @@
        ;; session has already been loaded.  The other main use case, which
        ;; is the initial desktop-read upon starting Emacs, should usually
        ;; only have one, or very few, frame(s) to reuse.
-       (cond (;; When the target is tty, every existing frame is reusable.
-              (null display)
+       (cond ((null display)
+              ;; When the target is tty, every existing frame is reusable.
               (setq frame (desktop--find-frame nil display)))
-             (;; If the frame has its own minibuffer, let's see whether
+             ((car (setq mini (cdr (assq 'desktop--mini frame-cfg))))
+              ;; If the frame has its own minibuffer, let's see whether
               ;; that frame has already been loaded (which can happen after
               ;; M-x desktop-read).
-              (car (setq mini (cdr (assq 'desktop--mini frame-cfg))))
               (setq frame (or (desktop--find-frame
                                (lambda (f m)
                                  (equal (frame-parameter f 'desktop--mini) m))
                                display mini))))
-             (;; For minibufferless frames, check whether they already exist,
+             (mini
+              ;; For minibufferless frames, check whether they already exist,
               ;; and that they are linked to the right minibuffer frame.
-              mini
               (setq frame (desktop--find-frame
                            (lambda (f n)
-                             (let ((m (frame-parameter f 'desktop--mini)))
+                             (pcase-let (((and m `(,hasmini ,num))
+                                          (frame-parameter f 'desktop--mini)))
                                (and m
-                                    (null (cl-first m))
-                                    (= (cl-second m) n)
+                                    (null hasmini)
+                                    (= num n)
                                     (equal (cl-second (frame-parameter
                                                        (window-frame 
(minibuffer-window f))
                                                        'desktop--mini))
                                            n))))
                            display (cl-second mini))))
-             (;; Default to just finding a frame in the same display.
-              t
+             (t
+              ;; Default to just finding a frame in the same display.
               (setq frame (desktop--find-frame nil display))))
        ;; If found, remove from the list.
        (when frame
@@ -1320,14 +1321,12 @@
   ;; Order: default minibuffer frame
   ;;       other frames with minibuffer, ascending ID
   ;;       minibufferless frames, ascending ID
-  (let ((dm1 (cdr (assq 'desktop--mini (car state1))))
-       (dm2 (cdr (assq 'desktop--mini (car state2)))))
-    (cond ((cl-third dm1) t)
-         ((cl-third dm2) nil)
-         ((eq (cl-first dm1) (cl-first dm2))
-          (< (cl-second dm1) (cl-second dm2)))
-         (t
-          (cl-first dm1)))))
+  (pcase-let ((`(,_p1 ,hasmini1 ,num1 ,default1) (assq 'desktop--mini (car 
state1)))
+             (`(,_p2 ,hasmini2 ,num2 ,default2) (assq 'desktop--mini (car 
state2))))
+    (cond (default1 t)
+         (default2 nil)
+         ((eq hasmini1 hasmini2) (< num1 num2))
+         (t hasmini1))))
 
 (defun desktop-restoring-frames-p ()
   "True if calling `desktop-restore-frames' will actually restore frames."
@@ -1353,10 +1352,10 @@
 
       (dolist (state desktop-saved-frame-states)
        (condition-case err
-           (let* ((frame-cfg (car state))
-                  (window-cfg (cdr state))
-                  (d-mini (cdr (assq 'desktop--mini frame-cfg)))
-                  num frame to-tty)
+           (pcase-let* ((`(,frame-cfg . ,window-cfg) state)
+                        ((and d-mini `(,hasmini ,num ,default))
+                         (cdr (assq 'desktop--mini frame-cfg)))
+                        (frame nil) (to-tty nil))
              ;; Only set target if forcing displays and the target display is 
different.
              (if (or (not forcing)
                      (equal target (or (assq 'display frame-cfg) '(display . 
nil))))
@@ -1379,15 +1378,14 @@
                (cond
                 ((null d-mini)) ;; No desktop--mini.  Process as normal frame.
                 (to-tty) ;; Ignore minibuffer stuff and process as normal 
frame.
-                ((cl-first d-mini) ;; Frame has minibuffer (or it is 
minibuffer-only).
-                 (setq num (cl-second d-mini))
+                (hasmini ;; Frame has minibuffer (or it is minibuffer-only).
                  (when (eq (cdr (assq 'minibuffer frame-cfg)) 'only)
                    (setq frame-cfg (append '((tool-bar-lines . 0) 
(menu-bar-lines . 0))
                                            frame-cfg))))
                 (t ;; Frame depends on other frame's minibuffer window.
-                 (let ((mb-frame (cdr (assq (cl-second d-mini) frame-mb-map))))
+                 (let ((mb-frame (cdr (assq num frame-mb-map))))
                    (unless (frame-live-p mb-frame)
-                     (error "Minibuffer frame %s not found" (cl-second 
d-mini)))
+                     (error "Minibuffer frame %s not found" num))
                    (let ((mb-param (assq 'minibuffer frame-cfg))
                          (mb-window (minibuffer-window mb-frame)))
                      (unless (and (window-live-p mb-window)
@@ -1400,9 +1398,9 @@
                ;; restore the window config.
                (setq frame (desktop--make-frame frame-cfg window-cfg))
                ;; Set default-minibuffer if required.
-               (when (cl-third d-mini) (setq default-minibuffer-frame frame))
-               ;; Store frame/NUM to assign to minibufferless frames.
-               (when num (push (cons num frame) frame-mb-map))))
+               (when default (setq default-minibuffer-frame frame))
+               ;; Store NUM/frame to assign to minibufferless frames.
+               (when hasmini (push (cons num frame) frame-mb-map))))
          (error
           (delay-warning 'desktop (error-message-string err) :error))))
 


reply via email to

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