(global-set-key [f12] 'simple-doit-2) (defun simple-doit-2 () "Tests fit-frame-to-buffer." (interactive) (let ((simple-frame (make-frame `((name . "Simple Frame") (visibility . ,simple-visibility))) ) (simple-buffer (get-buffer-create "Simple Buffer"))) (set-window-buffer (frame-selected-window simple-frame) simple-buffer) (with-current-buffer simple-buffer (erase-buffer) (insert (format "version %s" .emacs-current-emacs-version))) ;;; (raise-frame simple-frame) (let* ((invoking-frame (selected-frame)) (newish (<= 25.1 (string-to-number .emacs-current-emacs-version))) (invoke-origin (if newish (frame-position invoking-frame) '(0 . 25))) (invoke-left (car invoke-origin)) (invoke-top (cdr invoke-origin)) (left -41) (top invoke-top) (width 60) (height 6)) (unwind-protect (while (progn ;;; (set-frame-size simple-frame width height) (set-frame-position simple-frame left top) (or (frame-visible-p simple-frame) (raise-frame simple-frame)) (select-frame-set-input-focus simple-frame) (set-buffer simple-buffer) (goto-char (point-max)) (insert (format "\n%s l:%3d t:%3d w:%3d h:%3d" (selected-frame) left top width height)) (fit-frame-to-buffer simple-frame) (setq left (+ left 10) top (+ top 10) height (+ height 1)) (if newish (discard-input)) ;; loop test (not (equal (read-event "press any key to continue, escape to terminate") 'escape))) ) ;; end no body while ;; Protected. (select-frame invoking-frame) (delete-frame simple-frame))) ))