> These are the two options on the table?
>
> (let ((frame-inhibit-make-frame-hidden-buffer-check t))
> (with-current-buffer " *string-pixel-width*"
> (make-frame)))
> ;; could also do this if users want the behavior all the time
> (setq frame-inhibit-make-frame-hidden-buffer-check t)
>
> (with-current-buffer " *string-pixel-width*"
> (setq-local frame-inhibit-make-frame-hidden-buffer-check t)
> (make-frame)
> (kill-local-variable 'frame-inhibit-make-frame-hidden-buffer-check))
>
> I prefer the former over the latter.
I prefer these ones
(let ((frame-inhibit-make-frame-hidden-buffer-check t))
(with-current-buffer " *string-pixel-width*"
(make-frame)))
;; Set the default for all buffers.
(setq-default frame-inhibit-make-frame-hidden-buffer-check t)
;; Set the buffer-local value.
(with-current-buffer " *string-pixel-width*"
(setq frame-inhibit-make-frame-hidden-buffer-check t))
with the attached patch.
> It seems harmonious with other
> frame-related controls such as frame-resize-pixelwise
> and frame-inhibit-implied-resize, unless I'm missing some subtlety, which I
> surely am.
The subtlety is that a leading space in a buffer name is a buffer-local
property, a property which affects only the buffer wearing that name and
no other buffers.
'frame-resize-pixelwise' and 'frame-inhibit-implied-resize' are (or
better should be) frame properties, properties that affect a frame and
consequently all buffers displayed on that frame.
martin