Prevent non-local exits from ns-in-echo-area
* src/nsterm.m (ns_in_echo_area_1): (ns_in_echo_area_2): (ns_in_echo_area): New functions. ([EmacsView firstRectForCharacterRange:]): Call them instead. (syms_of_nsterm): New defsym.
This commit is contained in:
parent
9d334f558a
commit
47b377f64b
1 changed files with 32 additions and 1 deletions
33
src/nsterm.m
33
src/nsterm.m
|
@ -7056,6 +7056,36 @@ - (void)unmarkText
|
|||
processingCompose = NO;
|
||||
}
|
||||
|
||||
static Lisp_Object
|
||||
ns_in_echo_area_1 (void *ptr)
|
||||
{
|
||||
Lisp_Object in_echo_area;
|
||||
specpdl_ref count;
|
||||
|
||||
count = SPECPDL_INDEX ();
|
||||
specbind (Qinhibit_quit, Qt);
|
||||
in_echo_area = safe_call (1, Qns_in_echo_area);
|
||||
|
||||
return unbind_to (count, in_echo_area);
|
||||
}
|
||||
|
||||
static Lisp_Object
|
||||
ns_in_echo_area_2 (enum nonlocal_exit exit, Lisp_Object error)
|
||||
{
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static bool
|
||||
ns_in_echo_area (void)
|
||||
{
|
||||
Lisp_Object in_echo_area;
|
||||
|
||||
in_echo_area
|
||||
= internal_catch_all (ns_in_echo_area_1, NULL,
|
||||
ns_in_echo_area_2);
|
||||
|
||||
return !NILP (in_echo_area);
|
||||
}
|
||||
|
||||
/* Used to position char selection windows, etc. */
|
||||
- (NSRect)firstRectForCharacterRange: (NSRange)theRange
|
||||
|
@ -7069,7 +7099,7 @@ - (NSRect)firstRectForCharacterRange: (NSRange)theRange
|
|||
if (NS_KEYLOG)
|
||||
NSLog (@"firstRectForCharRange request");
|
||||
|
||||
if (WINDOWP (echo_area_window) && ! NILP (call0 (intern ("ns-in-echo-area"))))
|
||||
if (WINDOWP (echo_area_window) && ns_in_echo_area ())
|
||||
win = XWINDOW (echo_area_window);
|
||||
else
|
||||
win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
|
||||
|
@ -11012,6 +11042,7 @@ Nil means use fullscreen the old (< 10.7) way. The old way works better with
|
|||
DEFSYM (Qcondensed, "condensed");
|
||||
DEFSYM (Qreverse_italic, "reverse-italic");
|
||||
DEFSYM (Qexpanded, "expanded");
|
||||
DEFSYM (Qns_in_echo_area, "ns-in-echo-area");
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
Fprovide (Qcocoa, Qnil);
|
||||
|
|
Loading…
Add table
Reference in a new issue