emacs-devel
[Top][All Lists]
Advanced

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

Re: set-frame-parameter a child-frame's 'parent-frame error on macOS ?


From: martin rudalics
Subject: Re: set-frame-parameter a child-frame's 'parent-frame error on macOS ?
Date: Fri, 12 Jan 2018 09:49:39 +0100

> The test code:
>
> ----------------
> (let ((test (let ((after-make-frame-functions nil))
>                (make-frame
>                 `((parent-frame . ,(window-frame))
>                   (width . 10)
>                   (height . 10))))))
>    (set-frame-parameter test 'parent-frame (window-frame)))
> ----------

I'm not sure what this code is supposed to do.  First you make a new
child frame named 'test' with the selected frame as its parent.  Then
you want to set the parent frame of 'test' to the selected frame.

But I'm afraid that the implementation of x_set_parent_frame in
nsterm.m has a bug which I didn't notice before.  It uses FRAME_X_P
although it probably should use FRAME_NS_P.  And this

> Debugger entered--Lisp error: (error "Invalid specification of 
‘parent-frame’")
>    modify-frame-parameters(#<frame Emacs 0x114d8b960> ((parent-frame . #<frame 
*scratch* 0x106815a30>)))
>    set-frame-parameter(#<frame Emacs 0x114d8b960> parent-frame #<frame *scratch* 
0x106815a30>)
>    (let ((test (let ((after-make-frame-functions nil)) (make-frame (cons 
(cons 'parent-frame (window-frame)) '((width . 10) (height . 10))))))) 
(set-frame-parameter test 'parent-frame (window-frame)))
>    eval((let ((test (let ((after-make-frame-functions nil)) (make-frame (cons 
(cons 'parent-frame (window-frame)) '((width . 10) (height . 10))))))) 
(set-frame-parameter test 'parent-frame (window-frame))) nil)
>    elisp--eval-last-sexp(nil)
>    #f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in 
the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent 
buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables 
`eval-expression-print-length' and\n`eval-expression-print-level'.  With a prefix argument of 
zero,\nhowever, there is no such truncation.  Such a prefix argument\nalso causes integers to be printed in 
several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the 
integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is 
non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." 
(interactive "P") #<bytecode 0x400d4227>)(nil)
>    #f(compiled-function (&rest _it) #<bytecode 0x413d1275>)()
>    eval-sexp-fu-flash-doit-simple(#f(compiled-function (&rest _it) #<bytecode 0x413d1275>) 
#f(compiled-function (&rest args2) #<bytecode 0x45362dbd>) #f(compiled-function (&rest args2) 
#<bytecode 0x45362ddd>))
>    eval-sexp-fu-flash-doit(#f(compiled-function (&rest _it) #<bytecode 0x413d1275>) 
#f(compiled-function (&rest args2) #<bytecode 0x45362dbd>) #f(compiled-function (&rest args2) 
#<bytecode 0x45362ddd>))
>    esf-flash-doit(#f(compiled-function (&rest _it) #<bytecode 0x413d1275>) #f(compiled-function (&rest 
args2) #<bytecode 0x45362dbd>) #f(compiled-function (&rest args2) #<bytecode 0x45362ddd>) 
#f(compiled-function (&rest args2) #<bytecode 0x45362dfd>))
>    ad-Advice-eval-last-sexp(#f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp 
before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output 
into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the 
variables `eval-expression-print-length' and\n`eval-expression-print-level'.  With a prefix argument of 
zero,\nhowever, there is no such truncation.  Such a prefix argument\nalso causes integers to be printed in 
several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the 
integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is 
non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." 
(interactive "P") #<bytecode 0x400d4227>) nil)
>    apply(ad-Advice-eval-last-sexp #f(compiled-function (eval-last-sexp-arg-internal) "Evaluate 
sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print 
output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the 
variables `eval-expression-print-length' and\n`eval-expression-print-level'.  With a prefix argument of 
zero,\nhowever, there is no such truncation.  Such a prefix argument\nalso causes integers to be printed in 
several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the 
integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is 
non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." 
(interactive "P") #<bytecode 0x400d4227>) nil)
>    eval-last-sexp(nil)
>    eros-eval-last-sexp(nil)
>    funcall-interactively(eros-eval-last-sexp nil)
>    call-interactively(eros-eval-last-sexp nil nil)
>    command-execute(eros-eval-last-sexp)

looks very similar to Bug#30019's

Debugger entered--Lisp error: (error "Invalid specification of ‘parent-frame’")
  modify-frame-parameters(#<frame Emacs 0x11571e7d0> ((parent-frame .
#<frame *Warnings* 0x10982e5b0>)))
  set-frame-parameter(#<frame Emacs 0x11571e7d0> parent-frame #<frame
*Warnings* 0x10982e5b0>)

Alan, please have a look.

Thanks, martin




reply via email to

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