unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* src/nsterm.m: fix window tabbing on macOS
@ 2021-05-08  9:26 Paul W. Rankin via Emacs development discussions.
  2021-05-08 11:21 ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-08  9:26 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 136 bytes --]

src/nsterm.m: use NSWindowTabbingModeAutomatic to respect user choice.
Tabbed window managers are now widely available for free systems.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch --]
[-- Type: text/x-diff; name=0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch, Size: 1338 bytes --]

From 930d5ccfa2e8356e8daf8036f2487bb30a103893 Mon Sep 17 00:00:00 2001
From: "Paul W. Rankin" <pwr@bydasein.com>
Date: Sat, 8 May 2021 19:09:59 +1000
Subject: [PATCH] src/nsterm.m: fix window tabbing on macOS

* src/nsterm.m: use NSWindowTabbingModeAutomatic to respect user choice.
  Tabbed window managers are now widely available for free systems.
---
 src/nsterm.m | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/nsterm.m b/src/nsterm.m
index bb20886ab1..def1aec285 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7628,12 +7628,12 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
          selector:@selector (viewDidResize:)
              name:NSViewFrameDidChangeNotification object:nil];
 
-  /* macOS Sierra automatically enables tabbed windows.  We can't
-     allow this to be enabled until it's available on a Free system.
-     Currently it only happens by accident and is buggy anyway.  */
+  /* macOS Sierra automatically enables tabbed windows.  Tabbed window
+     managers are now also widely available on free operating
+     systems. */
 #ifdef NS_IMPL_COCOA
   if ([win respondsToSelector: @selector(setTabbingMode:)])
-    [win setTabbingMode: NSWindowTabbingModeDisallowed];
+    [win setTabbingMode: NSWindowTabbingModeAutomatic];
 #endif
 
   ns_window_num++;
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-08  9:26 src/nsterm.m: fix window tabbing on macOS Paul W. Rankin via Emacs development discussions.
@ 2021-05-08 11:21 ` Alan Third
  2021-05-08 12:27   ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-05-08 11:21 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Sat, May 08, 2021 at 07:26:41PM +1000, Paul W. Rankin via Emacs development discussions. wrote:
> src/nsterm.m: use NSWindowTabbingModeAutomatic to respect user choice.
> Tabbed window managers are now widely available for free systems.

For the record the tabbing being enabled here is not Emacs's own
tabbing, it's a macOS method of combining multiple OS windows into
one. Emacs's tabbing has still to be implemented on the NS port (I've
no interest as I think tabbed windows are an abomination that should
be burnt on sight, but would happily let someone else implement it).

Paul, is this still the absolute disaster it was when it first
appeared where some random Emacs frames would get combined but not
others, not to mention the crashes? Also there was no "user choice" as
I recall, it just happened without any warning or input from the user,
at random.

Is it actually stable and usable now?
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-08 11:21 ` Alan Third
@ 2021-05-08 12:27   ` Paul W. Rankin via Emacs development discussions.
  2021-05-08 12:35     ` Paul W. Rankin via Emacs development discussions.
  2021-05-10 19:53     ` Alan Third
  0 siblings, 2 replies; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-08 12:27 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel

> On 8 May 2021, at 9:21 pm, Alan Third <alan@idiocy.org> wrote:
>> src/nsterm.m: use NSWindowTabbingModeAutomatic to respect user choice.
>> Tabbed window managers are now widely available for free systems.
> 
> For the record the tabbing being enabled here is not Emacs's own
> tabbing, it's a macOS method of combining multiple OS windows into
> one. Emacs's tabbing has still to be implemented on the NS port (I've
> no interest as I think tabbed windows are an abomination that should
> be burnt on sight, but would happily let someone else implement it).

I think all the more reason not to hobble the macOS window manager! But 
yes it should be noted that tabs here are in the context of window 
management (i.e. Emacs frames) not tab-bar-mode. A Linux counterpart 
would be https://tools.suckless.org/tabbed/

> Paul, is this still the absolute disaster it was when it first
> appeared where some random Emacs frames would get combined but not
> others, not to mention the crashes? Also there was no "user choice" as
> I recall, it just happened without any warning or input from the user,
> at random.
> 
> Is it actually stable and usable now?

I've been building Emacs with this change applied for several years now 
across a few different macOS versions and I've never experienced a crash 
or unexpected behaviour. But it depends on what you might be doing that 
I'm not; can you provide a step-by-step?

The user choice I refer to resides in the odd place of System 
Preferences > Dock > Prefer tabs when opening documents: [Always | In 
Full Screen Only | Manually]. The behaviour I've experienced with each 
of these is:

- Always: invoking `make-new-frame' will always create a frame in a new 
tab
- In Full Screen Only: invoking `make-new-frame' will create a frame in 
a new tab only when `(frame-parameter nil 'fullscreen)' is non-nil
- Manually: `make-new-frame' will never create new tabs

(Off topic but it would be nice if there were some mention in the docs 
that tab-bar-mode does not function at all on macOS rather than silently 
failing.)



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-08 12:27   ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-08 12:35     ` Paul W. Rankin via Emacs development discussions.
  2021-05-10 19:53     ` Alan Third
  1 sibling, 0 replies; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-08 12:35 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel

On 2021-05-08 22:27, Paul W. Rankin wrote:
> (Off topic but it would be nice if there were some mention in the docs
> that tab-bar-mode does not function at all on macOS rather than
> silently failing.)

Correction: does not function in macOS GUI client; console works.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-08 12:27   ` Paul W. Rankin via Emacs development discussions.
  2021-05-08 12:35     ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-10 19:53     ` Alan Third
  2021-05-11  5:45       ` Paul W. Rankin via Emacs development discussions.
  1 sibling, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-05-10 19:53 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Sat, May 08, 2021 at 10:27:13PM +1000, Paul W. Rankin wrote:
> > On 8 May 2021, at 9:21 pm, Alan Third <alan@idiocy.org> wrote:
> > > src/nsterm.m: use NSWindowTabbingModeAutomatic to respect user choice.
> > > Tabbed window managers are now widely available for free systems.
> > 
> > For the record the tabbing being enabled here is not Emacs's own
> > tabbing, it's a macOS method of combining multiple OS windows into
> > one. Emacs's tabbing has still to be implemented on the NS port (I've
> > no interest as I think tabbed windows are an abomination that should
> > be burnt on sight, but would happily let someone else implement it).
> 
> I think all the more reason not to hobble the macOS window manager! But yes
> it should be noted that tabs here are in the context of window management
> (i.e. Emacs frames) not tab-bar-mode. A Linux counterpart would be
> https://tools.suckless.org/tabbed/

I reckon this is probably OK, but I'll leave it a bit longer to see if
anyone else has an opinion.

> > Paul, is this still the absolute disaster it was when it first
> > appeared where some random Emacs frames would get combined but not
> > others, not to mention the crashes? Also there was no "user choice" as
> > I recall, it just happened without any warning or input from the user,
> > at random.
> > 
> > Is it actually stable and usable now?
> 
> I've been building Emacs with this change applied for several years now
> across a few different macOS versions and I've never experienced a crash or
> unexpected behaviour. But it depends on what you might be doing that I'm
> not; can you provide a step-by-step?

IIRC, it would just crash pretty much at random, and without much
prompting, so you'd likely know if it was still a problem.

Most likely the fullscreen crash fixes from a couple of years ago
solved it.

> The user choice I refer to resides in the odd place of System Preferences >
> Dock > Prefer tabs when opening documents: [Always | In Full Screen Only |
> Manually]. The behaviour I've experienced with each of these is:
> 
> - Always: invoking `make-new-frame' will always create a frame in a new tab
> - In Full Screen Only: invoking `make-new-frame' will create a frame in a
> new tab only when `(frame-parameter nil 'fullscreen)' is non-nil
> - Manually: `make-new-frame' will never create new tabs

That location really doesn't much sense! Certainly explains why I've
never seen it before. :)

This is really my lastremaining concern, that it's such an obscure
setting that we'll get a lot of bug reports about Emacs-doing-tabs
when-I-don't-want-it-to. I'm not sure there's a good solution to that
other than perhaps putting a note in the NS port documentation (which
afaict nobody ever reads anyway).

BTW, is there an advantage to explicitly enabling the default setting
over just removing the code that disables it?

-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-10 19:53     ` Alan Third
@ 2021-05-11  5:45       ` Paul W. Rankin via Emacs development discussions.
  2021-05-11 19:20         ` chad
  2021-05-12 21:23         ` Alan Third
  0 siblings, 2 replies; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-11  5:45 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On 2021-05-11 05:53, Alan Third wrote:
> On Sat, May 08, 2021 at 10:27:13PM +1000, Paul W. Rankin wrote:
> I reckon this is probably OK, but I'll leave it a bit longer to see if
> anyone else has an opinion.

If I'm not mistaken, it is the fourth commandment of emacs-devel that 
someone must raise an objection. Especially if the change does not 
affect them.

> IIRC, it would just crash pretty much at random, and without much
> prompting, so you'd likely know if it was still a problem.
> 
> Most likely the fullscreen crash fixes from a couple of years ago
> solved it.

I'm on macOS 10.13 Hi Sarah and previously was on 10.14 and 10.15, but 
if anyone is on macOS 11 Big Slurp it may be worth building/testing.

>> The user choice I refer to resides in the odd place of System 
>> Preferences >
>> Dock > Prefer tabs when opening documents: [Always | In Full Screen 
>> Only |
>> Manually]. The behaviour I've experienced with each of these is:
>> 
>> - Always: invoking `make-new-frame' will always create a frame in a 
>> new tab
>> - In Full Screen Only: invoking `make-new-frame' will create a frame 
>> in a
>> new tab only when `(frame-parameter nil 'fullscreen)' is non-nil
>> - Manually: `make-new-frame' will never create new tabs

I should clarify here that the macOS window manager is not querying 
Emacs frame parameters. Correlation not causation!

> That location really doesn't much sense! Certainly explains why I've
> never seen it before. :)
> 
> This is really my lastremaining concern, that it's such an obscure
> setting that we'll get a lot of bug reports about Emacs-doing-tabs
> when-I-don't-want-it-to. I'm not sure there's a good solution to that
> other than perhaps putting a note in the NS port documentation (which
> afaict nobody ever reads anyway).

You are correct. I only looked at the nextstep/README file today.

Given that tabs look much a part of the macOS window system I think/hope 
a person's first assumption would be that it's an Apple thing and 
hopefully first burn out their ire on Apple forums/reddits/etc. 
Nevertheless, we shouldn't inhibit all for the failings of a few.

The only thing that's a little weird is that this tab bar is not visible 
when in full screen, requiring moving the mouse up to reveal it. It 
would clearer what's happening if the tab bar behaved more like 
Terminal.app when in full screen: opening more than a single tab keeps 
the tab bar visible (in full screen or windowed).

Apple's documentation on this is very thin, so I doubt it's a simple 
boolean switch: 
https://developer.apple.com/documentation/appkit/nswindowtabgroup

> BTW, is there an advantage to explicitly enabling the default setting
> over just removing the code that disables it?

Sorry I am unqualified to offer an opinion here, other than if someone 
wants to change it the code is already there for them to easily make the 
change and rebuild Emacs.

Tangentially, this lead me to read a little about GNUstep. Does GNUstep 
provide the same kind of tabbing as macOS?



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-11  5:45       ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-11 19:20         ` chad
  2021-05-12  9:47           ` Paul W. Rankin via Emacs development discussions.
  2021-05-12 21:23         ` Alan Third
  1 sibling, 1 reply; 44+ messages in thread
From: chad @ 2021-05-11 19:20 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: EMACS development team

[-- Attachment #1: Type: text/plain, Size: 427 bytes --]

On Mon, May 10, 2021 at 10:54 PM Paul W. Rankin via Emacs development
discussions. <emacs-devel@gnu.org> wrote:

> I'm on macOS 10.13 Hi Sarah and previously was on 10.14 and 10.15, but
> if anyone is on macOS 11 Big Slurp it may be worth building/testing.
>

I don't have good access to macOS anymore, but I could borrow such a
machine for a few hours and try a build+test cycle if nobody else has
access. Let me know.

~Chad

[-- Attachment #2: Type: text/html, Size: 788 bytes --]

^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-11 19:20         ` chad
@ 2021-05-12  9:47           ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 0 replies; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-12  9:47 UTC (permalink / raw)
  To: chad; +Cc: EMACS development team

On 2021-05-12 05:20, chad wrote:
>> I'm on macOS 10.13 Hi Sarah and previously was on 10.14 and 10.15, but
>> if anyone is on macOS 11 Big Slurp it may be worth building/testing.
> 
> I don't have good access to macOS anymore, but I could borrow such a
> machine for a few hours and try a build+test cycle if nobody else has
> access. Let me know.

Probably not needed. Once merged into master there should be enough 
people already on macOS to test.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-11  5:45       ` Paul W. Rankin via Emacs development discussions.
  2021-05-11 19:20         ` chad
@ 2021-05-12 21:23         ` Alan Third
  2021-05-13  5:46           ` Paul W. Rankin via Emacs development discussions.
  1 sibling, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-05-12 21:23 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Tue, May 11, 2021 at 03:45:08PM +1000, Paul W. Rankin via Emacs development discussions. wrote:
> On 2021-05-11 05:53, Alan Third wrote:
> > On Sat, May 08, 2021 at 10:27:13PM +1000, Paul W. Rankin wrote:
> > I reckon this is probably OK, but I'll leave it a bit longer to see if
> > anyone else has an opinion.
> 
> If I'm not mistaken, it is the fourth commandment of emacs-devel that
> someone must raise an objection. Especially if the change does not affect
> them.

Indeed, then argue the point to the death. :)

> > That location really doesn't much sense! Certainly explains why I've
> > never seen it before. :)
> > 
> > This is really my lastremaining concern, that it's such an obscure
> > setting that we'll get a lot of bug reports about Emacs-doing-tabs
> > when-I-don't-want-it-to. I'm not sure there's a good solution to that
> > other than perhaps putting a note in the NS port documentation (which
> > afaict nobody ever reads anyway).
> 
> You are correct. I only looked at the nextstep/README file today.
> 
> Given that tabs look much a part of the macOS window system I think/hope a
> person's first assumption would be that it's an Apple thing and hopefully
> first burn out their ire on Apple forums/reddits/etc. Nevertheless, we
> shouldn't inhibit all for the failings of a few.

Yes, I suppose we could put it in NEWS and hope that enough people see
it there to cover us in places like reddit.

> The only thing that's a little weird is that this tab bar is not visible
> when in full screen, requiring moving the mouse up to reveal it. It would
> clearer what's happening if the tab bar behaved more like Terminal.app when
> in full screen: opening more than a single tab keeps the tab bar visible (in
> full screen or windowed).

Isn't that how all the window chrome works in fullscreen? Do we do
some special thing to hide the toolbar? Perhaps we should rethink that
(although enough people run in fullscreen all the time that I suspect
that change would be genuinely contentious).

> Apple's documentation on this is very thin, so I doubt it's a simple boolean
> switch: https://developer.apple.com/documentation/appkit/nswindowtabgroup

I remember looking into whether we could leverage the tab bar for our
built-in tab stuff, but it's a disappointingly featureless API.

> > BTW, is there an advantage to explicitly enabling the default setting
> > over just removing the code that disables it?
> 
> Sorry I am unqualified to offer an opinion here, other than if someone wants
> to change it the code is already there for them to easily make the change
> and rebuild Emacs.

If you just remove it completely does it do anything different from
your patch?

> Tangentially, this lead me to read a little about GNUstep. Does GNUstep
> provide the same kind of tabbing as macOS?

No, not to my knowledge. It may eventually, but unless someone's very
keen to implement it GNUstep tends to lag quite far behind the macOS
APIs.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-12 21:23         ` Alan Third
@ 2021-05-13  5:46           ` Paul W. Rankin via Emacs development discussions.
  2021-05-13 21:05             ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-13  5:46 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel

On 2021-05-13 07:23, Alan Third wrote:
>> You are correct. I only looked at the nextstep/README file today.
>> 
>> Given that tabs look much a part of the macOS window system I 
>> think/hope a
>> person's first assumption would be that it's an Apple thing and 
>> hopefully
>> first burn out their ire on Apple forums/reddits/etc. Nevertheless, we
>> shouldn't inhibit all for the failings of a few.
> 
> Yes, I suppose we could put it in NEWS and hope that enough people see
> it there to cover us in places like reddit.

Agreed. People like reading about new features (or "features").

>> The only thing that's a little weird is that this tab bar is not 
>> visible
>> when in full screen, requiring moving the mouse up to reveal it. It 
>> would
>> clearer what's happening if the tab bar behaved more like Terminal.app 
>> when
>> in full screen: opening more than a single tab keeps the tab bar 
>> visible (in
>> full screen or windowed).
> 
> Isn't that how all the window chrome works in fullscreen? Do we do
> some special thing to hide the toolbar? Perhaps we should rethink that
> (although enough people run in fullscreen all the time that I suspect
> that change would be genuinely contentious).

You're right and I can't find another macOS app with a tab bar that 
behaves the way Emacs.app does, so I gotta assume there is something 
somewhere overriding the Cocoa window manager behaviour. But I'm really 
only qualified to guess; I looked through nsterm.m and changed a few 
suspected BOOL values and recompiled a few times but nothing had an 
effect on the hidden tab bar.

Relatedly, tool-bar-mode is in the same boat; hidden in full screen, but 
probably shouldn't be.

> If you just remove it completely does it do anything different from
> your patch?

It appears that removing the code has the same effect as 
NSWindowTabbingModeAutomatic. I like minimalism so happy to just remove 
it.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-13  5:46           ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-13 21:05             ` Alan Third
  2021-05-16  9:16               ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-05-13 21:05 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Thu, May 13, 2021 at 03:46:54PM +1000, Paul W. Rankin via Emacs development discussions. wrote:
> On 2021-05-13 07:23, Alan Third wrote:
> > > The only thing that's a little weird is that this tab bar is not
> > > visible
> > > when in full screen, requiring moving the mouse up to reveal it. It
> > > would
> > > clearer what's happening if the tab bar behaved more like
> > > Terminal.app when
> > > in full screen: opening more than a single tab keeps the tab bar
> > > visible (in
> > > full screen or windowed).
> > 
> > Isn't that how all the window chrome works in fullscreen? Do we do
> > some special thing to hide the toolbar? Perhaps we should rethink that
> > (although enough people run in fullscreen all the time that I suspect
> > that change would be genuinely contentious).
> 
> You're right and I can't find another macOS app with a tab bar that behaves
> the way Emacs.app does, so I gotta assume there is something somewhere
> overriding the Cocoa window manager behaviour. But I'm really only qualified
> to guess; I looked through nsterm.m and changed a few suspected BOOL values
> and recompiled a few times but nothing had an effect on the hidden tab bar.
> 
> Relatedly, tool-bar-mode is in the same boat; hidden in full screen, but
> probably shouldn't be.

Search in nsterm.m for "autohide", there are a couple of places where
hiding various bits and bobs is done, all related to fullscreen
afaict.

I'm not on a Mac just now or I'd try removing them all to see what it
does.

As I said, I suspect this change could be contentious, so we may want
to provide a variable to enable or disable it.

> > If you just remove it completely does it do anything different from
> > your patch?
> 
> It appears that removing the code has the same effect as
> NSWindowTabbingModeAutomatic. I like minimalism so happy to just remove it.

👍
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-13 21:05             ` Alan Third
@ 2021-05-16  9:16               ` Paul W. Rankin via Emacs development discussions.
  2021-05-26 19:56                 ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-16  9:16 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3097 bytes --]

On 2021-05-14 07:05, Alan Third wrote:
> On Thu, May 13, 2021 at 03:46:54PM +1000, Paul W. Rankin via Emacs
> development discussions. wrote:
>> On 2021-05-13 07:23, Alan Third wrote:
>> You're right and I can't find another macOS app with a tab bar that 
>> behaves
>> the way Emacs.app does, so I gotta assume there is something somewhere
>> overriding the Cocoa window manager behaviour. But I'm really only 
>> qualified
>> to guess; I looked through nsterm.m and changed a few suspected BOOL 
>> values
>> and recompiled a few times but nothing had an effect on the hidden tab 
>> bar.
>> 
>> Relatedly, tool-bar-mode is in the same boat; hidden in full screen, 
>> but
>> probably shouldn't be.
> 
> Search in nsterm.m for "autohide", there are a couple of places where
> hiding various bits and bobs is done, all related to fullscreen
> afaict.
> 
> I'm not on a Mac just now or I'd try removing them all to see what it
> does.

Looks like you're on the money!

I've attached two patches: 0001 is to remove the explicit setting of 
NSWindowTabbingModeDisallowed; 0002 allows visibility of the toolbar and 
tab bar in fullscreen (screenshot attached), but reliably causes a 
segmentation fault with the following steps:

1. System Preferences > Dock > Prefer tabs... [Always]
2. $ emacs -Q
3. M-x toggle-frame-full
4. M-x make-frame
5. M-x delete-frame

Attached crash.log.

Interestingly, calling delete-other-frames does not trigger a crash and 
when in windowed (non-fullscreen) a crash is only triggered with the 
following:

1. System Preferences > Dock > Prefer tabs... [Always]
2. $ emacs -Q
3. M-x make-frame
4. M-x make-frame
5. click close background tab
6. wait for animation to finish
7. click close foreground tab

> As I said, I suspect this change could be contentious, so we may want
> to provide a variable to enable or disable it.
> 
>> > If you just remove it completely does it do anything different from
>> > your patch?
>> 
>> It appears that removing the code has the same effect as
>> NSWindowTabbingModeAutomatic. I like minimalism so happy to just 
>> remove it.
> 
> 👍

Let's view these as two separate but related changes, one to remove the 
explicit setting of NSWindowTabbingModeDisallowed (patch 0001), the 
other to fix the code that's preventing toolbar visibility when in 
fullscreen (WIP patch 0002). I think the former is easy and not 
contentious, whereas the latter -- obviously once it's not crashing -- 
may be another story.

There are three positions someone could take:

1. wants tabs in all macOS apps including Emacs.app
2. does not want tabs in any macOS apps including Emacs.app
3. wants tabs in all other macOS except for Emacs.app

Anyone in categories 1 and 2 will be covered by the option in System 
Preferences. Given that all I think we're doing here is removing old 
barrier code to have Emacs function with an OS's native window manager, 
anyone in the third category would be putting the onus on themselves to 
write code for additional functionality.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch --]
[-- Type: text/x-diff; name=0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch, Size: 1082 bytes --]

From 3efca3b2e5d58f66d272cf02cf8f14746f8b1031 Mon Sep 17 00:00:00 2001
From: "Paul W. Rankin" <pwr@bydasein.com>
Date: Sat, 8 May 2021 19:09:59 +1000
Subject: [PATCH 1/2] src/nsterm.m: fix window tabbing on macOS

* src/nsterm.m: remove NSWindowTabbingModeDisallowed to respect
  system-wide preferences
---
 src/nsterm.m | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/src/nsterm.m b/src/nsterm.m
index bb20886ab1..5fd4885801 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7628,14 +7628,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
          selector:@selector (viewDidResize:)
              name:NSViewFrameDidChangeNotification object:nil];
 
-  /* macOS Sierra automatically enables tabbed windows.  We can't
-     allow this to be enabled until it's available on a Free system.
-     Currently it only happens by accident and is buggy anyway.  */
-#ifdef NS_IMPL_COCOA
-  if ([win respondsToSelector: @selector(setTabbingMode:)])
-    [win setTabbingMode: NSWindowTabbingModeDisallowed];
-#endif
-
   ns_window_num++;
   return self;
 }
-- 
2.30.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-WIP-src-nsterm.m-allow-toolbar-visibility-in-fullscr.patch --]
[-- Type: text/x-diff; name=0002-WIP-src-nsterm.m-allow-toolbar-visibility-in-fullscr.patch, Size: 959 bytes --]

From 940ef4c9117bf3f91aa945c87ae3123e5313a77a Mon Sep 17 00:00:00 2001
From: "Paul W. Rankin" <pwr@bydasein.com>
Date: Sun, 16 May 2021 18:46:12 +1000
Subject: [PATCH 2/2] WIP src/nsterm.m: allow toolbar visibility in fullscreen
 on macOS

WIP DO NOT MERGE
---
 src/nsterm.m | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/src/nsterm.m b/src/nsterm.m
index 5fd4885801..1f3d0524fe 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7842,15 +7842,6 @@ - (void)windowDidMiniaturize: sender
     }
 }
 
-#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
-- (NSApplicationPresentationOptions)window:(NSWindow *)window
-      willUseFullScreenPresentationOptions:
-  (NSApplicationPresentationOptions)proposedOptions
-{
-  return proposedOptions|NSApplicationPresentationAutoHideToolbar;
-}
-#endif
-
 - (void)windowWillEnterFullScreen:(NSNotification *)notification
 {
   NSTRACE ("[EmacsView windowWillEnterFullScreen:]");
-- 
2.30.2


[-- Attachment #4: crash.log --]
[-- Type: text/plain, Size: 61264 bytes --]

Process:               emacs-28.0.50 [60753]
Path:                  /usr/local/bin/emacs
Identifier:            emacs-28.0.50
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        oksh [1601]
Responsible:           emacs-28.0.50 [60753]
User ID:               501

Date/Time:             2021-05-16 18:54:08.718 +1000
OS Version:            Mac OS X 10.13.6 (17G14042)
Report Version:        12
Anonymous UUID:        7903AC13-7109-A28A-9473-DFFB47F7F7B4

Sleep/Wake UUID:       7EE0989F-76A6-49A0-B99D-8190A0402E1E

Time Awake Since Boot: 290000 seconds
Time Since Wake:       2500 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000003
Exception Note:        EXC_CORPSE_NOTIFY

VM Regions Near 0x3:
--> 
    __TEXT                 0000000100a57000-0000000100cb4000 [ 2420K] r-x/rwx SM=COW  /usr/local/bin/emacs-28.0.50

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff5cd2fb66 __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff5cefa080 pthread_kill + 333
2   libsystem_c.dylib             	0x00007fff5cc3d6fe raise + 26
3   emacs                         	0x0000000100b1cb49 terminate_due_to_signal + 169
4   emacs                         	0x0000000100b3a9c1 emacs_abort + 19
5   emacs                         	0x0000000100c34a10 ns_term_shutdown + 80
6   emacs                         	0x0000000100b1cd89 shut_down_emacs + 345
7   emacs                         	0x0000000100b1cb17 terminate_due_to_signal + 119
8   emacs                         	0x0000000100b3d77e handle_fatal_signal + 14
9   emacs                         	0x0000000100b3d801 deliver_thread_signal + 129
10  emacs                         	0x0000000100b3c1b9 deliver_fatal_thread_signal + 9
11  emacs                         	0x0000000100b3d8b8 handle_sigsegv + 168
12  libsystem_platform.dylib      	0x00007fff5ceedf5a _sigtramp + 26
13  ???                           	000000000000000000 0 + 0
14  emacs                         	0x0000000100a9e531 expose_frame + 113
15  emacs                         	0x0000000100c3e09c -[EmacsView drawRect:] + 124
16  com.apple.AppKit              	0x00007fff32adef29 _NSViewDrawRect + 83
17  com.apple.AppKit              	0x00007fff3237773c -[NSView _drawRect:clip:] + 1819
18  com.apple.AppKit              	0x00007fff32376598 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4844
19  com.apple.AppKit              	0x00007fff32375ec5 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3097
20  com.apple.AppKit              	0x00007fff32375ec5 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 3097
21  com.apple.AppKit              	0x00007fff32374ddb -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 327
22  com.apple.AppKit              	0x00007fff32ae04e0 -[NSView _oldDisplayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2051
23  com.apple.AppKit              	0x00007fff32373e5d -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 253
24  com.apple.AppKit              	0x00007fff323700b4 -[NSView displayIfNeeded] + 1581
25  com.apple.AppKit              	0x00007fff3236fa52 -[NSWindow displayIfNeeded] + 321
26  com.apple.AppKit              	0x00007fff32b1060d ___NSWindowGetDisplayCycleObserver_block_invoke.5902 + 308
27  com.apple.AppKit              	0x00007fff3236f55e __37+[NSDisplayCycle currentDisplayCycle]_block_invoke + 695
28  com.apple.QuartzCore          	0x00007fff40027877 CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
29  com.apple.QuartzCore          	0x00007fff40026339 CA::Transaction::commit() + 171
30  com.apple.AppKit              	0x00007fff32355c20 NSPerformVisuallyAtomicChange + 166
31  com.apple.AppKit              	0x00007fff327a6cdb -[_NSFullScreenDetachedToolbarMenuBarCompanionController layout] + 106
32  com.apple.AppKit              	0x00007fff32257cf7 -[NSThemeFrame _updateTitlebarContainerViewFrameIfNecessary] + 473
33  com.apple.AppKit              	0x00007fff322744b0 -[NSThemeFrame _relayoutAuxiliaryViewsOfType:] + 183
34  com.apple.AppKit              	0x00007fff322743e6 -[NSThemeFrame relayoutAuxiliaryViewsOfType:] + 27
35  com.apple.AppKit              	0x00007fff3259f237 -[NSTitlebarViewController removeChildViewControllerAtIndex:] + 431
36  com.apple.AppKit              	0x00007fff32a8dd1f -[NSWindowStackController _makeTabBarForWindow:visible:] + 338
37  com.apple.AppKit              	0x00007fff32a91896 -[NSWindowStackController _removeSyncedItemAtIndex:] + 650
38  com.apple.AppKit              	0x00007fff32a8f149 -[NSWindowStackController removeWindow:] + 252
39  com.apple.AppKit              	0x00007fff3261897d -[NSWindow(NSWindowTabbing) _doTabbedWindowCleanupForOrderOut] + 97
40  com.apple.AppKit              	0x00007fff32b02278 -[NSWindow _finishClosingWindow] + 73
41  com.apple.AppKit              	0x00007fff324a1ed8 -[NSWindow _close] + 378
42  emacs                         	0x0000000100c43a0c ns_destroy_window + 140
43  emacs                         	0x0000000100a67537 delete_frame + 1671
44  emacs                         	0x0000000100badbcb funcall_subr + 267
45  emacs                         	0x0000000100bad188 Ffuncall + 840
46  emacs                         	0x0000000100ba5979 Ffuncall_interactively + 73
47  emacs                         	0x0000000100bad188 Ffuncall + 840
48  emacs                         	0x0000000100ba6e28 Fcall_interactively + 5272
49  emacs                         	0x0000000100badbeb funcall_subr + 299
50  emacs                         	0x0000000100bad188 Ffuncall + 840
51  emacs                         	0x0000000100bf2ba2 exec_byte_code + 1618
52  emacs                         	0x0000000100bad129 Ffuncall + 745
53  emacs                         	0x0000000100bf2ba2 exec_byte_code + 1618
54  emacs                         	0x0000000100bad129 Ffuncall + 745
55  emacs                         	0x0000000100ba5979 Ffuncall_interactively + 73
56  emacs                         	0x0000000100bad188 Ffuncall + 840
57  emacs                         	0x0000000100baccdf Fapply + 607
58  emacs                         	0x0000000100ba5e4e Fcall_interactively + 1214
59  emacs                         	0x0000000100badbeb funcall_subr + 299
60  emacs                         	0x0000000100bad188 Ffuncall + 840
61  emacs                         	0x0000000100bf2ba2 exec_byte_code + 1618
62  emacs                         	0x0000000100bad129 Ffuncall + 745
63  emacs                         	0x0000000100bad81c call1 + 44
64  emacs                         	0x0000000100b211c7 command_loop_1 + 1959
65  emacs                         	0x0000000100bab069 internal_condition_case + 281
66  emacs                         	0x0000000100b315b0 command_loop_2 + 48
67  emacs                         	0x0000000100baa53a internal_catch + 362
68  emacs                         	0x0000000100b1fefe command_loop + 158
69  emacs                         	0x0000000100b1fe13 recursive_edit_1 + 115
70  emacs                         	0x0000000100b200bb Frecursive_edit + 347
71  emacs                         	0x0000000100b1eb8c main + 7564
72  libdyld.dylib                 	0x00007fff5cbdf015 start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef7009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef720e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef720e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef720e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff5cd2fcf2 __select + 10
1   emacs                         	0x0000000100c36028 -[EmacsApp fd_handler:] + 264
2   com.apple.Foundation          	0x00007fff36da79d8 __NSThread__start__ + 1197
3   libsystem_pthread.dylib       	0x00007fff5cef7661 _pthread_body + 340
4   libsystem_pthread.dylib       	0x00007fff5cef750d _pthread_start + 377
5   libsystem_pthread.dylib       	0x00007fff5cef6bf9 thread_start + 13

Thread 6:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff5cd261fa mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff5cd25714 mach_msg + 60
2   com.apple.CoreFoundation      	0x00007fff34c9a405 __CFRunLoopServiceMachPort + 341
3   com.apple.CoreFoundation      	0x00007fff34c99757 __CFRunLoopRun + 1783
4   com.apple.CoreFoundation      	0x00007fff34c98dd3 CFRunLoopRunSpecific + 483
5   com.apple.AppKit              	0x00007fff3236dfc4 _NSEventThread + 184
6   libsystem_pthread.dylib       	0x00007fff5cef7661 _pthread_body + 340
7   libsystem_pthread.dylib       	0x00007fff5cef750d _pthread_start + 377
8   libsystem_pthread.dylib       	0x00007fff5cef6bf9 thread_start + 13

Thread 7:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef720e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 8:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef7009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 9:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef7009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff5cd3028a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff5cef720e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff5cef6be9 start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00007fff95622380  rcx: 0x00000001010b27d8  rdx: 0x0000000000000000
  rdi: 0x0000000000000307  rsi: 0x0000000000000006  rbp: 0x00000001010b2810  rsp: 0x00000001010b27d8
   r8: 0x0000000000000006   r9: 0x00007fa44ae6e380  r10: 0x0000000000000000  r11: 0x0000000000000287
  r12: 0x0000000000000307  r13: 0x000000000000031e  r14: 0x0000000000000006  r15: 0x000000000000002d
  rip: 0x00007fff5cd2fb66  rfl: 0x0000000000000286  cr2: 0x00000001010b1fe0
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133


Binary Images:
       0x100a57000 -        0x100cb3fff +emacs (0) <2053FCCB-0DF9-3E07-9F5C-0DD0567E4D0D> /usr/local/bin/emacs
       0x1011e5000 -        0x101207ff7 +libpng16.16.dylib (0) <0A567A4D-E417-3593-8FEE-00C7C459F475> /opt/pkg/*/libpng16.16.dylib
       0x101215000 -        0x101224fff +libz.1.dylib (0) <4B5BA086-02C8-3484-A036-599ADCD6036D> /opt/pkg/*/libz.1.dylib
       0x10122e000 -        0x10130dff3 +libxml2.2.dylib (0) <99D6DF45-151C-30F1-9E6D-A00CEE1392CC> /opt/pkg/*/libxml2.2.dylib
       0x101345000 -        0x101377ffb +libncurses.6.dylib (0) <2F95709A-65E3-37CF-B4CA-36F22D768E14> /opt/pkg/*/libncurses.6.dylib
       0x101387000 -        0x101505ffb +libgnutls.30.dylib (0) <9F8A555C-5B67-31DC-8673-5EF57DAA10CF> /opt/pkg/*/libgnutls.30.dylib
       0x101554000 -        0x10158bff7 +liblcms2.2.dylib (0) <91D2AE2A-0514-3FAE-BF9A-47A0A0BD7B9D> /opt/pkg/*/liblcms2.2.dylib
       0x10159e000 -        0x1015b8ff7 +liblzma.5.dylib (0) <01D95D3E-2C55-366E-BD32-CF2D1869D287> /opt/pkg/*/liblzma.5.dylib
       0x1015be000 -        0x101697ffb +libiconv.2.dylib (0) <A999F90B-FA78-3AB3-9E18-6C3F0195B633> /opt/pkg/*/libiconv.2.dylib
       0x1016a6000 -        0x10174dfff +libp11-kit.0.dylib (0) <D20D8AF1-E058-31E8-9E08-BBF4176707A1> /opt/pkg/*/libp11-kit.0.dylib
       0x101807000 -        0x10180cfd7 +libffi.7.dylib (0) <48193131-4C3C-3EAF-AC9B-703CD4CD9FDF> /opt/pkg/*/libffi.7.dylib
       0x101816000 -        0x101977ff3 +libunistring.2.dylib (0) <0AE819A3-406D-33BB-AD88-85F89675B5A0> /opt/pkg/*/libunistring.2.dylib
       0x10198c000 -        0x101997ff3 +libtasn1.6.dylib (0) <F1FEC854-A1FF-3D6C-9CFC-177E0870817B> /opt/pkg/*/libtasn1.6.dylib
       0x1019a2000 -        0x1019d7fff +libhogweed.6.dylib (0) <BBB8A796-973F-37D8-A1EA-49AFFD77CD14> /opt/pkg/*/libhogweed.6.dylib
       0x1019f0000 -        0x101a1efff +libnettle.8.dylib (0) <C531DFE9-6D20-3CF1-AF59-04A5422AF611> /opt/pkg/*/libnettle.8.dylib
       0x101a44000 -        0x101abafc7 +libgmp.10.dylib (0) <C990307A-D379-346E-9FF6-AC69E58C3502> /opt/pkg/*/libgmp.10.dylib
       0x101ad0000 -        0x101ad8fff +libintl.8.dylib (0) <9AD349A1-DE4F-3EAE-B618-D90DF87424EA> /opt/pkg/*/libintl.8.dylib
       0x10a9c9000 -        0x10aa13adf  dyld (551.5) <CB9BFB56-4511-36F1-A546-891FF770C01C> /usr/lib/dyld
    0x7fff2d1c7000 -     0x7fff2d515ff7  com.apple.RawCamera.bundle (8.05.0 - 1017.4.1) <937CBA8D-60C8-3739-8DFF-1C737D6339EF> /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
    0x7fff2eb24000 -     0x7fff2eba9ff7  com.apple.driver.AppleIntelHD5000GraphicsMTLDriver (10.36.32 - 10.3.6) <3282B3D0-4B36-3146-94E3-9DF8229105AF> /System/Library/Extensions/AppleIntelHD5000GraphicsMTLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsMTLDriver
    0x7fff31189000 -     0x7fff31189fff  com.apple.Accelerate (1.11 - Accelerate 1.11) <8632A9C5-19EA-3FD7-A44D-80765CC9C540> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff3118a000 -     0x7fff311a0fef  libCGInterfaces.dylib (417.2) <46DFCDA4-0470-3CDB-9875-0375D35FB9A3> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
    0x7fff311a1000 -     0x7fff3169ffc3  com.apple.vImage (8.1 - ???) <A243A7EF-0C8E-3A9A-AA38-44AFD7507F00> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff316a0000 -     0x7fff317fafe3  libBLAS.dylib (1211.50.2) <62C659EB-3E32-3B5F-83BF-79F5DF30D5CE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff317fb000 -     0x7fff31829fef  libBNNS.dylib (38.1) <7BAEFDCA-3227-3E07-80D8-59B6370B89C6> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
    0x7fff3182a000 -     0x7fff31be9ff7  libLAPACK.dylib (1211.50.2) <40ADBA5F-8B2D-30AC-A7AD-7B17C37EE52D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff31bea000 -     0x7fff31bffff7  libLinearAlgebra.dylib (1211.50.2) <E8E0B7FD-A0B7-31E5-AF01-81781F71EBBE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff31c00000 -     0x7fff31c05ff3  libQuadrature.dylib (3) <E936BDAF-8492-34D9-8C5C-AFBFCDAD8318> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
    0x7fff31c06000 -     0x7fff31c86fff  libSparse.dylib (79.50.2) <0DC25CDD-F8C1-3D6E-B472-8B060708424F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
    0x7fff31c87000 -     0x7fff31c9afff  libSparseBLAS.dylib (1211.50.2) <722573CC-31CC-34B2-9032-E4F652A9CCFE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
    0x7fff31c9b000 -     0x7fff31e48fc3  libvDSP.dylib (622.50.5) <40690941-CF89-3F90-A0AC-A4D200744A5D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff31e49000 -     0x7fff31efafff  libvMisc.dylib (622.50.5) <BA2532DF-2D68-3DD0-9B59-D434BF702AA4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff31efb000 -     0x7fff31efbfff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <54FF3B43-E66C-3F36-B34B-A2B3B0A36502> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff321ef000 -     0x7fff3304dfff  com.apple.AppKit (6.9 - 1561.61.100) <4E6EA3FA-8C2C-3B21-BFF9-6F8C458B7BE1> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff3309f000 -     0x7fff3309ffff  com.apple.ApplicationServices (48 - 50) <2B5B76E7-0AB2-31F9-BE58-B963BF1EC2E8> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff330a0000 -     0x7fff33106fff  com.apple.ApplicationServices.ATS (377 - 445.5) <60176327-F757-308E-B61A-D43394E87CC5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff3319f000 -     0x7fff332c1ff7  libFontParser.dylib (222.1.9) <FFF2AC1A-D4D2-3AD3-BFF2-F3649ECB02AC> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff332c2000 -     0x7fff3330dff7  libFontRegistry.dylib (221.6) <30C6D1DE-C0E3-3447-A0EF-829443D95F0E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff333b2000 -     0x7fff333e5ff7  libTrueTypeScaler.dylib (222.1.9) <BF00CE2B-6BC5-3337-8350-A1BAB88A3CE0> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib
    0x7fff3344f000 -     0x7fff33453ff3  com.apple.ColorSyncLegacy (4.13.0 - 1) <04764FB2-22D8-36F0-9647-2D21562E28D5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
    0x7fff334f3000 -     0x7fff33545ffb  com.apple.HIServices (1.22 - 625) <3C059A55-1409-373E-BF0B-C3299AFABDCF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff33546000 -     0x7fff33554fff  com.apple.LangAnalysis (1.7.0 - 1.7.0) <8BB267F4-D5AA-3D35-8269-1A3CEA054ACD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff33555000 -     0x7fff335a1fff  com.apple.print.framework.PrintCore (13.4 - 503.2) <2EA98448-9D6A-3912-9933-F7703CB01B6E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff335a2000 -     0x7fff335dcfff  com.apple.QD (3.12 - 404.2) <525E9518-DFF3-3D8D-BD48-E0D63EEDBD16> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff335dd000 -     0x7fff335e9fff  com.apple.speech.synthesis.framework (7.8.1 - 7.8.1) <CD09019C-569B-3A56-B84C-26F2A6223455> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff335ea000 -     0x7fff33878ff7  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <C7BE1645-BE23-3427-8650-1CEFDAF86710> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff3387a000 -     0x7fff3387afff  com.apple.audio.units.AudioUnit (1.14 - 1.14) <294802B9-E24D-34EB-973F-6D2B8E2E86CB> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff33b9d000 -     0x7fff33f3afff  com.apple.CFNetwork (902.6 - 902.6) <46168F79-CCFA-349A-8508-B8CBCE27D440> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff33f4f000 -     0x7fff33f4ffff  com.apple.Carbon (158 - 158) <F8B370D9-2103-3276-821D-ACC756167F86> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff33f50000 -     0x7fff33f53ffb  com.apple.CommonPanels (1.2.6 - 98) <075486A5-8E39-3F72-BED7-752517379C55> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff33f54000 -     0x7fff34259fff  com.apple.HIToolbox (2.1.1 - 911.10) <8D2EBE85-9AF0-38BC-ACD3-1ED978643907> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff3425a000 -     0x7fff3425dffb  com.apple.help (1.3.8 - 66) <7F210C1C-D7D3-3C97-A2E4-D3CC35F91807> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff3425e000 -     0x7fff34263fff  com.apple.ImageCapture (9.0 - 9.0) <3993E094-AB86-3B22-BC18-4550F23854FF> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff34264000 -     0x7fff342f9ffb  com.apple.ink.framework (10.9 - 221) <83976BB8-A423-3AA5-8221-6EB04B3DEF0A> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff342fa000 -     0x7fff34314ff7  com.apple.openscripting (1.7 - 174) <C282DFBB-4BF2-3222-87E0-0B560D5B4B2F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff34335000 -     0x7fff34336fff  com.apple.print.framework.Print (12 - 267) <DFC4CE94-F6E6-3DFA-AB88-A13E4C5A7701> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff34337000 -     0x7fff34339ff7  com.apple.securityhi (9.0 - 55006) <1AB48F32-D1CB-3657-A30C-40A7E718A71D> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff3433a000 -     0x7fff34340fff  com.apple.speech.recognition.framework (6.0.3 - 6.0.3) <2A07BB54-438B-34C9-8061-45403E197ACA> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff3446f000 -     0x7fff34528fff  com.apple.ColorSync (4.13.0 - 3325) <EAD2D314-E810-33FB-B105-BD30ABB912AD> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff346b5000 -     0x7fff34748ff7  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <AF2B41CC-DD7A-34EB-A842-00DC3B8F2E9F> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff347af000 -     0x7fff347d8ffb  com.apple.CoreBluetooth (1.0 - 1) <ED48840B-A80A-32C1-8E4B-DEB7A7CD3C1A> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
    0x7fff347d9000 -     0x7fff34b2ffef  com.apple.CoreData (120 - 851) <7361F2EA-2B7F-3259-909F-287BEB443781> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff34b30000 -     0x7fff34c13fff  com.apple.CoreDisplay (99.14 - 99.14) <9B2B211D-EC0A-3569-BB37-887768CD6105> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
    0x7fff34c14000 -     0x7fff350b7fe7  com.apple.CoreFoundation (6.9 - 1455.300) <CB44B892-64CD-3E32-A518-6D40B1A7033F> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff350b9000 -     0x7fff356c9fef  com.apple.CoreGraphics (2.0 - 1161.21.5) <6451A561-3A83-37FB-AAA7-3FCE6D95C34C> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff356cb000 -     0x7fff359bafff  com.apple.CoreImage (13.0.0 - 579.5) <B2B60A80-2E10-3EDF-920C-94288E55AE25> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff35c49000 -     0x7fff35d3fffb  com.apple.CoreMedia (1.0 - 2276.80.4) <67942D16-3658-37FC-B61C-8ED3D4BFBFB9> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
    0x7fff35d8f000 -     0x7fff35d8ffff  com.apple.CoreServices (822.37 - 822.37) <CE816EF2-2B89-3F54-A5C6-D3080B1EFB00> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff35d90000 -     0x7fff35e04ffb  com.apple.AE (735.2 - 735.2) <0938A72B-6A4A-36F1-95B3-5EF6B915CEEE> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff35e05000 -     0x7fff360dcfff  com.apple.CoreServices.CarbonCore (1178.4.2 - 1178.4.2) <4692EE3A-11FE-31FD-AF5B-30F892E87A05> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff360dd000 -     0x7fff36111fff  com.apple.DictionaryServices (1.2 - 284.2) <F1F3EFAE-2562-394D-8FB3-BE22F16CD75A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff36112000 -     0x7fff3611affb  com.apple.CoreServices.FSEvents (1239.50.2 - 1239.50.2) <FE465894-4235-3CE2-9A97-32D6C6C7D9AD> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff3611b000 -     0x7fff362d9ff7  com.apple.LaunchServices (822.37 - 822.37) <0DB4679F-AE39-3BF3-B39B-549322E355AF> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff362da000 -     0x7fff3638afff  com.apple.Metadata (10.7.0 - 1191.8) <F3BD3FD7-208A-31E9-85CD-6E607DDAFEF0> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff3638b000 -     0x7fff363ebfff  com.apple.CoreServices.OSServices (822.37 - 822.37) <564DDE70-0250-346B-B5CC-4AFAC11A7373> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff363ec000 -     0x7fff3645afff  com.apple.SearchKit (1.4.0 - 1.4.0) <97DD9E7D-3567-382B-ACF7-CE0E4FE78D36> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff3645b000 -     0x7fff3647fffb  com.apple.coreservices.SharedFileList (71.21 - 71.21) <88991F51-0A75-34FF-8C91-ED0F3C270B7B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
    0x7fff36720000 -     0x7fff36870fff  com.apple.CoreText (352.0 - 578.23) <10DAF601-85A8-3F9C-8B0B-69DC16B95E47> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff36871000 -     0x7fff368abfff  com.apple.CoreVideo (1.8 - 0.0) <0DD4FFDF-E1F1-39D1-8246-5D0D9869F1EA> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff368ac000 -     0x7fff36937ff3  com.apple.framework.CoreWLAN (13.0 - 1350.2) <EC145FBD-F638-38B8-BE94-F892A2F02550> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff36bb2000 -     0x7fff36bb7fff  com.apple.DiskArbitration (2.7 - 2.7) <51DC4AED-6F0C-321F-93E3-20EA4341B768> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff36d78000 -     0x7fff3713fffb  com.apple.Foundation (6.9 - 1455.300) <0479E072-1DD0-3881-A9A2-EDAD3EE58C23> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff371b0000 -     0x7fff371e0ff3  com.apple.GSS (4.0 - 2.0) <7E83A21E-4F90-38F3-9FD3-FAC0E0143243> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff372f2000 -     0x7fff373f6ffb  com.apple.Bluetooth (6.0.7 - 6.0.7f22) <08E33A6B-16A7-3E4E-82C9-E1E5A84300D0> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x7fff37456000 -     0x7fff374f1fff  com.apple.framework.IOKit (2.0.2 - 1445.71.6) <4B5C715C-6A49-366B-9080-ABADE6A3B3BD> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff374f3000 -     0x7fff374fafff  com.apple.IOSurface (211.15 - 211.15) <08DA3232-805F-304B-80DD-C86B49CC4AAD> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff37551000 -     0x7fff376ccfe7  com.apple.ImageIO.framework (3.3.0 - 1739.3.8) <58BD6865-E629-3283-859B-82C4C3A5FF66> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff376cd000 -     0x7fff376d1ffb  libGIF.dylib (1739.3.8) <E3446976-10BF-3B75-9A11-32893368D748> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff376d2000 -     0x7fff377b9fe7  libJP2.dylib (1739.3.8) <4B440B09-1542-304C-8BE5-EB0F9370046C> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff377ba000 -     0x7fff377ddff7  libJPEG.dylib (1739.3.8) <F6BCF3DA-6F0B-35A8-982C-BEFD2DD6DBFE> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff37acc000 -     0x7fff37af2feb  libPng.dylib (1739.3.8) <25C5D4B1-3715-3DF5-BE4B-C71089ADBBFE> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff37af3000 -     0x7fff37af5ffb  libRadiance.dylib (1739.3.8) <5134034F-A7BC-3749-A141-92BC89579AF6> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff37af6000 -     0x7fff37b44fe7  libTIFF.dylib (1739.3.8) <91F6CDBD-C4A0-3614-81DC-B9A9E3838CF0> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff389fe000 -     0x7fff38a17ff7  com.apple.Kerberos (3.0 - 1) <C7CDC1E0-011B-3220-847D-1AC3DA6D5522> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff38cd6000 -     0x7fff38cddfff  com.apple.MediaAccessibility (1.0 - 114) <00F21329-1163-3283-A882-A5DD7A12D353> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
    0x7fff38d8d000 -     0x7fff393f7ff7  com.apple.MediaToolbox (1.0 - 2276.80.4) <FA444376-E5AF-36AB-BE1D-76ECE4D72049> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
    0x7fff393f9000 -     0x7fff3947afff  com.apple.Metal (125.30 - 125.30) <67EDA241-80B1-3C67-BB2B-FF83E49FEF8D> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
    0x7fff39497000 -     0x7fff394b2fff  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <8DED0F0C-4A10-36A3-A3E2-7D3CF429ACE1> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore
    0x7fff394b3000 -     0x7fff39522fef  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <48F4A97F-143A-3918-AB92-6733E258E25A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage
    0x7fff39523000 -     0x7fff39547fff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <CD443ADC-07FE-3603-B0C9-60C2AF3616FF> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
    0x7fff39548000 -     0x7fff3962fff7  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <40EB0BAE-6DDE-3334-A28C-529AE4C6716A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
    0x7fff39630000 -     0x7fff39630ff7  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <A111E862-43E5-3247-9E98-0A40DC34AD9B> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
    0x7fff3a62f000 -     0x7fff3a63bffb  com.apple.NetFS (6.0 - 4.0) <02E09301-324F-3542-875D-B87B144635C8> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff3d42d000 -     0x7fff3d487ff7  com.apple.opencl (2.8.24 - 2.8.24) <429B5283-276D-372D-BB0E-EEBE1408C393> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff3d488000 -     0x7fff3d4a4ffb  com.apple.CFOpenDirectory (10.13 - 207.50.1) <E9AD4934-5DE3-3DD0-9D7B-9D288D829F15> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff3d4a5000 -     0x7fff3d4b0fff  com.apple.OpenDirectory (10.13 - 207.50.1) <8B54C486-14C9-3FEF-97B8-F4D6F59F75CF> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff3e62f000 -     0x7fff3e631fff  libCVMSPluginSupport.dylib (16.7.4) <3E26CF2B-5074-3321-AD9E-6A667D61AA35> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff3e632000 -     0x7fff3e637ffb  libCoreFSCache.dylib (162.12) <D12E1D0E-C0E5-329E-99B4-AB152C9ABBE3> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
    0x7fff3e638000 -     0x7fff3e63cfff  libCoreVMClient.dylib (162.12) <39951906-8566-3F9D-9EA8-EBD6084DCF73> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff3e63d000 -     0x7fff3e646ff3  libGFXShared.dylib (16.7.4) <81A7875B-103D-3C82-B25C-DE24E57E5C8B> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff3e647000 -     0x7fff3e652fff  libGL.dylib (16.7.4) <2BB333D3-5C61-33DF-8545-06DF2D08B83D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff3e653000 -     0x7fff3e68efe7  libGLImage.dylib (16.7.4) <4DA003CE-0B74-3FE4-808C-B2FBCE517EB4> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff3e7fd000 -     0x7fff3e83bffb  libGLU.dylib (16.7.4) <BCB09CD8-EB0E-38FA-8B5A-9E29532EE364> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff3f1b3000 -     0x7fff3f1c2ff3  com.apple.opengl (16.7.4 - 16.7.4) <77A788F3-8F0C-305C-AEB9-FF258676C599> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff40016000 -     0x7fff40262ff7  com.apple.QuartzCore (1.11 - 584.64.2) <FD9A3180-479E-3DAC-9CF0-0D214C7E46A7> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff40a9a000 -     0x7fff40dc5fff  com.apple.security (7.0 - 58286.70.19) <E118FC23-2E20-3999-826B-58488049A277> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff40dc6000 -     0x7fff40e52ff7  com.apple.securityfoundation (6.0 - 55185.50.5) <3D9AD4EF-439C-3AE1-9332-AD291CF96C64> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff40e84000 -     0x7fff40e88ffb  com.apple.xpc.ServiceManagement (1.0 - 1) <3FCAF325-40C8-3148-9E49-E555F95B2946> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff4122d000 -     0x7fff4129dff3  com.apple.SystemConfiguration (1.17 - 1.17) <41D509AB-AED3-30FF-BB00-615BB5A8AC00> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff41452000 -     0x7fff417cdfff  com.apple.VideoToolbox (1.0 - 2276.80.4) <1C94A509-0372-3B58-94BC-4488C042BD79> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
    0x7fff4419a000 -     0x7fff4422dff3  com.apple.APFS (1.0 - 1) <70034B32-9347-30FB-9DDE-95061F686613> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
    0x7fff44e5a000 -     0x7fff44e82fff  com.apple.framework.Apple80211 (13.0 - 1370.4) <C296CDDB-0A79-3D6B-898A-0FBA1892F5AC> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff44e84000 -     0x7fff44e93fef  com.apple.AppleFSCompression (96.60.1 - 1.0) <CBE1A092-CE90-36B9-AAA6-0BE2E7921504> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff44f92000 -     0x7fff44f9dff7  com.apple.AppleIDAuthSupport (1.0 - 1) <924EA55F-1C87-347F-9212-F79EA2B2C84C> /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport
    0x7fff44fd7000 -     0x7fff4501fff3  com.apple.AppleJPEG (1.0 - 1) <15558577-08E3-3087-86A9-8B6247978BCE> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
    0x7fff4505a000 -     0x7fff45082fff  com.apple.applesauce (1.0 - ???) <9CE4CAE2-30B9-3DF6-9BC0-33D532D7B937> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
    0x7fff4514f000 -     0x7fff4519fff7  com.apple.AppleVAFramework (5.0.41 - 5.0.41) <C82921AA-1537-3736-BC16-5CABB3EF0100> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
    0x7fff454d5000 -     0x7fff4576effb  com.apple.AuthKit (1.0 - 1) <C3087797-E472-300E-8B4A-448857ACE8E7> /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit
    0x7fff458a5000 -     0x7fff458acff7  com.apple.coreservices.BackgroundTaskManagement (1.0 - 57.1) <B2A1EEDF-490A-38E2-A896-41057C0417BF> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
    0x7fff458ad000 -     0x7fff45934ff7  com.apple.backup.framework (1.9.6 - 1.9.6) <0A54D219-E71B-3BC6-8DFC-11ED47E431BE> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff472f0000 -     0x7fff472f9ff3  com.apple.CommonAuth (4.0 - 2.0) <21AF4AC2-E650-35F9-AB33-3EBA2769FBC0> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff47635000 -     0x7fff47a3dfff  com.apple.CoreAUC (259.0.0 - 259.0.0) <EF95ED0E-F4F1-3969-89BB-CE8CDD74C29F> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
    0x7fff47a3e000 -     0x7fff47a6eff7  com.apple.CoreAVCHD (5.9.0 - 5900.4.1) <6AC79B1F-0A12-34A4-BC0D-5A6A65ABABE0> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
    0x7fff47e0d000 -     0x7fff47e1dff7  com.apple.CoreEmoji (1.0 - 69.3) <DCCF04BB-DA33-3DC0-B7C2-1D34870C0C0A> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
    0x7fff485b1000 -     0x7fff485b9ff3  com.apple.CorePhoneNumbers (1.0 - 1) <3B388768-5CDB-341A-BCE2-4047EAD009EA> /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers
    0x7fff48744000 -     0x7fff48775ff3  com.apple.CoreServicesInternal (309.1 - 309.1) <9A9DE5A0-3912-3311-A351-2B7B5C35D1F0> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff48aef000 -     0x7fff48b80fff  com.apple.CoreSymbolication (9.3 - 64026.2) <30652FA5-C731-3A22-864D-DF6D9C77CD4C> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff48c03000 -     0x7fff48d38fff  com.apple.coreui (2.1 - 494.1) <5B4F3E9C-A4EF-3908-A035-59B8631C3685> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff48d39000 -     0x7fff48e6afff  com.apple.CoreUtils (5.6 - 560.11) <2C5A0610-1F08-3603-8692-EE03E62EE622> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
    0x7fff48ebf000 -     0x7fff48f23fff  com.apple.framework.CoreWiFi (13.0 - 1350.2) <500CC54F-A6CB-3D36-9BB1-C9C9F6A6E414> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff48f24000 -     0x7fff48f34ff7  com.apple.CrashReporterSupport (10.13 - 1) <1ADEC140-4838-3976-A14B-6268C5251481> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff48fb3000 -     0x7fff48fc2ff7  com.apple.framework.DFRFoundation (1.0 - 191.7) <F7AB1B29-A4B0-3938-AFDC-DAA204929404> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
    0x7fff48fc5000 -     0x7fff48fc9ffb  com.apple.DSExternalDisplay (3.1 - 380) <13AA3B17-E649-3B7B-B09D-9AE7C4A60887> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
    0x7fff4904b000 -     0x7fff490c1fff  com.apple.datadetectorscore (7.0 - 590.3) <E645FBF0-B47D-3394-84DF-792B85E94CB3> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff4910f000 -     0x7fff4914fff7  com.apple.DebugSymbols (181.0 - 181.0) <702DB951-F5A6-3155-9D84-BBA9A4B4E1BD> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff49150000 -     0x7fff4927ffff  com.apple.desktopservices (1.12.5 - 1.12.5) <96BB57E2-3359-3920-AA7C-BF03C2225485> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff4a094000 -     0x7fff4a4c2fff  com.apple.vision.FaceCore (3.3.2 - 3.3.2) <06065DA3-4091-3682-A308-BF3F2E3E4AF8> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
    0x7fff4c11e000 -     0x7fff4c11efff  libmetal_timestamp.dylib (802.4.8) <7E1B5ECC-7504-3B86-B3D9-5D8CDF88FCFA> /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/3802/Libraries/libmetal_timestamp.dylib
    0x7fff4d78a000 -     0x7fff4d78ffff  com.apple.GPUWrangler (3.20.18 - 3.20.18) <B54A9063-01EC-3D2C-8924-86A1F315DEA2> /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
    0x7fff4e505000 -     0x7fff4e514fff  com.apple.GraphVisualizer (1.0 - 5) <EB42FFAD-2BCA-3DE2-B40E-AFDE6E7FAA4D> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
    0x7fff4e597000 -     0x7fff4e60bfff  com.apple.Heimdal (4.0 - 2.0) <FF7BC1AE-1BA6-3150-A7CC-B9E0AD5EBE7F> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff4ef1e000 -     0x7fff4ef25ff7  com.apple.IOAccelerator (378.28 - 378.28) <F109E4CB-49D9-37FB-974A-8A3E9E8A61DA> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
    0x7fff4ef29000 -     0x7fff4ef40fff  com.apple.IOPresentment (1.0 - 35.1) <AC89202B-8433-3B62-A7BE-467D1905F6FB> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
    0x7fff4f30b000 -     0x7fff4f331ffb  com.apple.IconServices (97.6 - 97.6) <7913A453-8D29-31DC-ADDB-7CEC068C9B86> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
    0x7fff4f5b6000 -     0x7fff4f5c9ff3  com.apple.security.KeychainCircle.KeychainCircle (1.0 - 1) <B999BEF6-F3E7-30EE-9177-FBC8E826659D> /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle
    0x7fff4f5ca000 -     0x7fff4f6bfff7  com.apple.LanguageModeling (1.0 - 159.5.3) <FAA236D6-CFB8-37D2-B635-B324E0719E32> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff4f6c0000 -     0x7fff4f702fff  com.apple.Lexicon-framework (1.0 - 33.5) <F8DD2D09-5CEE-3741-93CF-223FC61FCCA4> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
    0x7fff4f706000 -     0x7fff4f70dff7  com.apple.LinguisticData (1.0 - 238.3) <6F2ED02A-2120-3ABA-8EC1-314E4FFE77F3> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
    0x7fff4ff0e000 -     0x7fff4ff11fff  com.apple.Mangrove (1.0 - 1) <471F4581-5235-3381-B16B-CE92ED6CF086> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
    0x7fff50421000 -     0x7fff5048aff7  com.apple.gpusw.MetalTools (1.0 - 1) <F2A47319-0430-3BB5-943E-651A40C127A9> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
    0x7fff50493000 -     0x7fff504aaff7  com.apple.MobileAssets (1.0 - 437.60.1) <94912D67-E290-3205-B919-C70C0A8D7FCF> /System/Library/PrivateFrameworks/MobileAsset.framework/Versions/A/MobileAsset
    0x7fff50606000 -     0x7fff5061ffff  com.apple.MobileKeyBag (2.0 - 1.0) <9EA31672-3B83-3ABF-B2D5-8584E159051E> /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
    0x7fff506ab000 -     0x7fff506d5ffb  com.apple.MultitouchSupport.framework (1614.1 - 1614.1) <A376F2FB-64AE-3B35-88B0-7D2BB4D1CB7C> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff5093c000 -     0x7fff50947fff  com.apple.NetAuth (6.2 - 6.2) <85C5D94D-C67E-36DC-B0EA-02F53AC4FCD3> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff521e3000 -     0x7fff521f3ffb  com.apple.PerformanceAnalysis (1.194 - 194) <B6934994-BD69-36F9-914E-6BBDCD797612> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff53fb2000 -     0x7fff53fd0fff  com.apple.ProtocolBuffer (1 - 260) <195906B1-1DB1-3AD2-B2F7-87B867C27F40> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
    0x7fff541a7000 -     0x7fff541caffb  com.apple.RemoteViewServices (2.0 - 125) <695CBF89-C15C-3E4C-8045-B46DCA64E3FB> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff55af0000 -     0x7fff55c05ff7  com.apple.Sharing (1050.22.9 - 1050.22.9) <CAB71093-B187-363E-BBAA-B0D23D7642AA> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
    0x7fff55c30000 -     0x7fff55c31ff7  com.apple.performance.SignpostNotification (1.2.6 - 2.6) <E77879A4-B040-3BE0-86F5-98173A4100AD> /System/Library/PrivateFrameworks/SignpostNotification.framework/Versions/A/SignpostNotification
    0x7fff5698f000 -     0x7fff56c2cfff  com.apple.SkyLight (1.600.0 - 312.103.12) <A65B547C-B7CA-3E33-A0C5-58AB436A8467> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
    0x7fff573f5000 -     0x7fff57402fff  com.apple.SpeechRecognitionCore (4.6.1 - 4.6.1) <90CDCEAD-5A65-3C35-9370-2B306895E97C> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
    0x7fff578af000 -     0x7fff578d6fff  com.apple.StreamingZip (1.0 - 1) <B5C3D9D6-B1DC-33E5-B7D2-ADAF3E0CA30E> /System/Library/PrivateFrameworks/StreamingZip.framework/Versions/A/StreamingZip
    0x7fff57fa8000 -     0x7fff58031fc7  com.apple.Symbolication (9.3 - 64033) <F576D527-4CB1-34A5-B15E-1130833EEDAB> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff585a2000 -     0x7fff585aaff7  com.apple.TCC (1.0 - 1) <9D5466C6-A8B6-3C24-A791-6506B81D9998> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff587b7000 -     0x7fff58874ff7  com.apple.TextureIO (3.7 - 3.7) <32C460CD-E93D-3FA5-A4AE-CA648722F5FE> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
    0x7fff58925000 -     0x7fff58ad5fff  com.apple.UIFoundation (1.0 - 547.9) <D0994333-5EB4-3415-8D18-2A0487AE91E0> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
    0x7fff597aa000 -     0x7fff59879ff7  com.apple.ViewBridge (343.2 - 343.2) <0A295791-B763-3E58-A9DD-8E4F40E815C9> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
    0x7fff5a251000 -     0x7fff5a253ffb  com.apple.loginsupport (1.0 - 1) <E273A65A-6379-3787-B119-BC6ED94D4A81> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
    0x7fff5a254000 -     0x7fff5a269fff  com.apple.login (3.0 - 3.0) <73202649-0081-3B4B-AD90-226C4F69A705> /System/Library/PrivateFrameworks/login.framework/Versions/A/login
    0x7fff5a3ba000 -     0x7fff5a3edff7  libclosured.dylib (551.5) <112BC241-6626-3848-8DD8-B34B5B6F7ABC> /usr/lib/closure/libclosured.dylib
    0x7fff5a4a7000 -     0x7fff5a4e0ff7  libCRFSuite.dylib (41) <14B00FCF-4C67-3736-95B5-76FEA6E4972C> /usr/lib/libCRFSuite.dylib
    0x7fff5a4e1000 -     0x7fff5a4ecfff  libChineseTokenizer.dylib (28) <2237A259-0E59-3DD0-BADC-281C361FAB70> /usr/lib/libChineseTokenizer.dylib
    0x7fff5a57e000 -     0x7fff5a57fff3  libDiagnosticMessagesClient.dylib (104) <3F855622-352B-3EA8-B7C8-94D1DB48C080> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff5a5b6000 -     0x7fff5a780ff3  libFosl_dynamic.dylib (17.8) <1A2A9D53-129E-3F7D-AE23-1D6E6D9EA017> /usr/lib/libFosl_dynamic.dylib
    0x7fff5a7b8000 -     0x7fff5a7b8fff  libOpenScriptingUtil.dylib (174) <AC38B2C3-5A37-30EB-A246-CEFABD3DD4E7> /usr/lib/libOpenScriptingUtil.dylib
    0x7fff5a8ef000 -     0x7fff5a8f3ffb  libScreenReader.dylib (562.18.5) <FFB20E40-7669-30F6-8577-B74E18076376> /usr/lib/libScreenReader.dylib
    0x7fff5a8f4000 -     0x7fff5a8f5ffb  libSystem.B.dylib (1252.50.4) <5A02016C-8F9D-3F47-8C39-AD2CD4F9F11D> /usr/lib/libSystem.B.dylib
    0x7fff5a988000 -     0x7fff5a988fff  libapple_crypto.dylib (109.50.15) <A8DEA8E9-5769-3C78-824D-969A98B94086> /usr/lib/libapple_crypto.dylib
    0x7fff5a989000 -     0x7fff5a99fff7  libapple_nghttp2.dylib (1.24) <24338D88-5D73-3165-9CFB-5A92734C9040> /usr/lib/libapple_nghttp2.dylib
    0x7fff5a9a0000 -     0x7fff5a9caff3  libarchive.2.dylib (54) <D2B6AD30-18CB-3E3C-ABBF-A0745654350F> /usr/lib/libarchive.2.dylib
    0x7fff5a9cb000 -     0x7fff5aa4cfdf  libate.dylib (1.13.1) <77603BB8-681D-32A6-966E-4F92B9165447> /usr/lib/libate.dylib
    0x7fff5aa50000 -     0x7fff5aa50ff3  libauto.dylib (187) <92E693DF-D74D-39A0-99AB-8A9F6FFEBA18> /usr/lib/libauto.dylib
    0x7fff5aa51000 -     0x7fff5ab0affb  libboringssl.dylib (109.50.15) <FC25FE02-6AA8-3F0B-9EF3-56A455C08C0F> /usr/lib/libboringssl.dylib
    0x7fff5ab0b000 -     0x7fff5ab1bff3  libbsm.0.dylib (39) <18D57879-A717-3466-9637-1704EE59A32A> /usr/lib/libbsm.0.dylib
    0x7fff5ab1c000 -     0x7fff5ab29ffb  libbz2.1.0.dylib (38) <0B4321CD-3D6F-3095-A12E-27F66B4321AD> /usr/lib/libbz2.1.0.dylib
    0x7fff5ab2a000 -     0x7fff5ab80fff  libc++.1.dylib (400.9) <142D6292-F30F-3949-9F37-3C97A579F540> /usr/lib/libc++.1.dylib
    0x7fff5ab81000 -     0x7fff5aba5ff7  libc++abi.dylib (400.8.2) <EF5E37D7-11D9-3530-BE45-B986612D13E2> /usr/lib/libc++abi.dylib
    0x7fff5aba7000 -     0x7fff5abb7fff  libcmph.dylib (6) <890DEC4C-4334-393C-8B56-7C8560BBED9D> /usr/lib/libcmph.dylib
    0x7fff5abb8000 -     0x7fff5abcffcf  libcompression.dylib (47.60.2) <543F07BF-2F2F-37D5-9866-E84BF659885B> /usr/lib/libcompression.dylib
    0x7fff5ae7a000 -     0x7fff5ae92ff7  libcoretls.dylib (155.50.1) <087E9F90-21E5-376D-9956-C4E346409682> /usr/lib/libcoretls.dylib
    0x7fff5ae93000 -     0x7fff5ae94ff3  libcoretls_cfhelpers.dylib (155.50.1) <78CCDD10-7D71-365E-A0A5-8524ED5F5BF9> /usr/lib/libcoretls_cfhelpers.dylib
    0x7fff5b365000 -     0x7fff5b3baff3  libcups.2.dylib (462.2.10) <590D6ACC-68A0-371E-8646-FC59F814534B> /usr/lib/libcups.2.dylib
    0x7fff5b4fa000 -     0x7fff5b4fafff  libenergytrace.dylib (16) <1F11D488-07C6-3D18-BEF2-0B28A992D761> /usr/lib/libenergytrace.dylib
    0x7fff5b531000 -     0x7fff5b536ff3  libheimdal-asn1.dylib (520.50.9) <EF65C17E-31CD-31DC-876C-BF3EF393099C> /usr/lib/libheimdal-asn1.dylib
    0x7fff5b562000 -     0x7fff5b653ff7  libiconv.2.dylib (51.50.1) <7965B866-C75A-3450-9891-0500349F7090> /usr/lib/libiconv.2.dylib
    0x7fff5b654000 -     0x7fff5b87bffb  libicucore.A.dylib (59181.0.1) <17767680-09DF-3954-AB6C-B13B41F92A2E> /usr/lib/libicucore.A.dylib
    0x7fff5b8c8000 -     0x7fff5b8c9fff  liblangid.dylib (128) <C54A2059-A4BE-364B-94C2-581C548459BC> /usr/lib/liblangid.dylib
    0x7fff5b8ca000 -     0x7fff5b8e3ffb  liblzma.5.dylib (10) <60BEAB81-CE65-3479-90CC-03325AACEC95> /usr/lib/liblzma.5.dylib
    0x7fff5b8e4000 -     0x7fff5b8faff7  libmarisa.dylib (9) <47540053-02CF-35F8-A75E-074DB3D51812> /usr/lib/libmarisa.dylib
    0x7fff5b9ab000 -     0x7fff5bbd3ff7  libmecabra.dylib (779.7.6) <B2ACB6A9-91AE-364B-9418-8EB938BF82B6> /usr/lib/libmecabra.dylib
    0x7fff5bdab000 -     0x7fff5bf26fff  libnetwork.dylib (1229.70.2) <0596A03E-C984-3FE6-B88E-63D5F96EC49A> /usr/lib/libnetwork.dylib
    0x7fff5bfad000 -     0x7fff5c39b7e7  libobjc.A.dylib (723) <843EFB54-EFCC-3A7C-BE11-092B6A556262> /usr/lib/libobjc.A.dylib
    0x7fff5c3ae000 -     0x7fff5c3b2fff  libpam.2.dylib (22) <E5840D63-8506-301A-9182-5000031854E1> /usr/lib/libpam.2.dylib
    0x7fff5c3b5000 -     0x7fff5c3edff7  libpcap.A.dylib (79.20.3) <6A9D27FA-2780-3E96-8B2E-645638AC13AC> /usr/lib/libpcap.A.dylib
    0x7fff5c46c000 -     0x7fff5c488ffb  libresolv.9.dylib (65.1) <D9BB6307-71E4-3A94-A745-1FCA114C6894> /usr/lib/libresolv.9.dylib
    0x7fff5c4d7000 -     0x7fff5c4d8ff3  libspindump.dylib (252) <7BE3801C-F1F5-3F54-AB70-9842F8EF3F09> /usr/lib/libspindump.dylib
    0x7fff5c4d9000 -     0x7fff5c66cff7  libsqlite3.dylib (274.8.1) <FCAD6A57-829E-3701-B16E-1833D620E0E8> /usr/lib/libsqlite3.dylib
    0x7fff5c840000 -     0x7fff5c8a0ff3  libusrtcp.dylib (1229.70.2) <1E065228-D0E3-3808-9405-894056C6BEC0> /usr/lib/libusrtcp.dylib
    0x7fff5c8a1000 -     0x7fff5c8a4ffb  libutil.dylib (51.20.1) <A50E15F1-20A2-3EA7-A8CE-A43662E18587> /usr/lib/libutil.dylib
    0x7fff5c8a5000 -     0x7fff5c8b2ff3  libxar.1.dylib (417.1) <351781D5-3CCF-320F-BB5A-4DFCC1CCD31D> /usr/lib/libxar.1.dylib
    0x7fff5c8b6000 -     0x7fff5c99dffb  libxml2.2.dylib (31.20) <286F8531-7001-3989-9640-284443355433> /usr/lib/libxml2.2.dylib
    0x7fff5c99e000 -     0x7fff5c9c6fff  libxslt.1.dylib (15.16) <57D56366-1E7B-356C-B2B8-F4688FF666E6> /usr/lib/libxslt.1.dylib
    0x7fff5c9c7000 -     0x7fff5c9d9ffb  libz.1.dylib (70) <47278BDC-596E-3037-B8DA-05FE9D5DBEF6> /usr/lib/libz.1.dylib
    0x7fff5ca75000 -     0x7fff5ca79ff7  libcache.dylib (80) <096D3699-58D2-3D23-9512-BC88DAE7B16C> /usr/lib/system/libcache.dylib
    0x7fff5ca7a000 -     0x7fff5ca84ff3  libcommonCrypto.dylib (60118.50.1) <B4E77BD4-A809-37E1-8A79-25955E0F5D9C> /usr/lib/system/libcommonCrypto.dylib
    0x7fff5ca85000 -     0x7fff5ca8cfff  libcompiler_rt.dylib (62) <4CEED002-D00B-35F8-B563-0546A5F71A43> /usr/lib/system/libcompiler_rt.dylib
    0x7fff5ca8d000 -     0x7fff5ca96ffb  libcopyfile.dylib (146.50.5) <F7A7999F-9509-3C67-8EE9-95BEE6772676> /usr/lib/system/libcopyfile.dylib
    0x7fff5ca97000 -     0x7fff5cb1cffb  libcorecrypto.dylib (562.70.3) <9C6E5CC2-272B-3740-AEDB-9EBEC98EC7F9> /usr/lib/system/libcorecrypto.dylib
    0x7fff5cba4000 -     0x7fff5cbddff7  libdispatch.dylib (913.60.3) <285526B6-A2A6-316D-A1CC-37803B71E203> /usr/lib/system/libdispatch.dylib
    0x7fff5cbde000 -     0x7fff5cbfbff7  libdyld.dylib (551.5) <49ABA86D-DD48-3133-9B14-B9A564EEBC66> /usr/lib/system/libdyld.dylib
    0x7fff5cbfc000 -     0x7fff5cbfcffb  libkeymgr.dylib (28) <7CC7B5E1-AB7F-3495-A26A-396461BCB66B> /usr/lib/system/libkeymgr.dylib
    0x7fff5cbfd000 -     0x7fff5cc09ff3  libkxld.dylib (4570.71.82.8) <44AF05D7-6BDF-3A9B-B5CF-D16C98B6844E> /usr/lib/system/libkxld.dylib
    0x7fff5cc0a000 -     0x7fff5cc0aff7  liblaunch.dylib (1205.70.16) <265EE555-E988-3EE5-A39E-028FB3A5FE11> /usr/lib/system/liblaunch.dylib
    0x7fff5cc0b000 -     0x7fff5cc0fffb  libmacho.dylib (906) <F5F16E2F-F961-3FF4-B02F-69BBDB57B8DC> /usr/lib/system/libmacho.dylib
    0x7fff5cc10000 -     0x7fff5cc12fff  libquarantine.dylib (86.70.1) <262CECFE-A493-3EC6-8608-CEA93757265E> /usr/lib/system/libquarantine.dylib
    0x7fff5cc13000 -     0x7fff5cc14ff3  libremovefile.dylib (45) <EA24BFB6-24B7-3841-8AAC-FAF400910706> /usr/lib/system/libremovefile.dylib
    0x7fff5cc15000 -     0x7fff5cc2cfff  libsystem_asl.dylib (356.70.1) <9481D82D-CFB7-3032-A07F-88F7F59CAC2C> /usr/lib/system/libsystem_asl.dylib
    0x7fff5cc2d000 -     0x7fff5cc2dfff  libsystem_blocks.dylib (67) <FA2C3663-9DBB-3AFB-80A3-E77BE0816AD0> /usr/lib/system/libsystem_blocks.dylib
    0x7fff5cc2e000 -     0x7fff5ccb7ff7  libsystem_c.dylib (1244.50.9) <25DD83D8-80CA-3DFF-8626-FE704911F19C> /usr/lib/system/libsystem_c.dylib
    0x7fff5ccb8000 -     0x7fff5ccbbffb  libsystem_configuration.dylib (963.50.9) <61B26E1D-FEFF-38C6-AE0E-A6DD90145EB2> /usr/lib/system/libsystem_configuration.dylib
    0x7fff5ccbc000 -     0x7fff5ccbfffb  libsystem_coreservices.dylib (51) <E8FA663F-1B0F-3B12-8F97-31A46E6B4D68> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff5ccc0000 -     0x7fff5ccc1fff  libsystem_darwin.dylib (1244.50.9) <6195EEA1-83A7-35F0-8147-5AB031020CD0> /usr/lib/system/libsystem_darwin.dylib
    0x7fff5ccc2000 -     0x7fff5ccc8ffb  libsystem_dnssd.dylib (878.70.4) <0D2C9583-5D28-375B-AEB4-F66F18C78322> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff5ccc9000 -     0x7fff5cd12ff7  libsystem_info.dylib (517.30.1) <9C2C96F3-638B-34E7-A2BD-24C643EAF957> /usr/lib/system/libsystem_info.dylib
    0x7fff5cd13000 -     0x7fff5cd39ff7  libsystem_kernel.dylib (4570.71.82.8) <C34BA704-FAFF-3DDB-9827-5930B5BEF134> /usr/lib/system/libsystem_kernel.dylib
    0x7fff5cd3a000 -     0x7fff5cd85fcb  libsystem_m.dylib (3147.50.1) <B3172533-77D2-3416-8487-4A505198E9E1> /usr/lib/system/libsystem_m.dylib
    0x7fff5cd86000 -     0x7fff5cda5ff7  libsystem_malloc.dylib (140.50.7) <821E16C8-7A7E-3269-9167-10F4F413BF93> /usr/lib/system/libsystem_malloc.dylib
    0x7fff5cda6000 -     0x7fff5ced6ff7  libsystem_network.dylib (1229.70.2) <07BFD80A-E7EB-3DEB-B765-5E1659453114> /usr/lib/system/libsystem_network.dylib
    0x7fff5ced7000 -     0x7fff5cee1ffb  libsystem_networkextension.dylib (767.70.2) <A90BAFFD-AC3D-3078-90B2-71463DBFD4A5> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff5cee2000 -     0x7fff5ceebff3  libsystem_notify.dylib (172) <738B3BB0-4F20-3446-A3B6-095D796E5903> /usr/lib/system/libsystem_notify.dylib
    0x7fff5ceec000 -     0x7fff5cef3ff7  libsystem_platform.dylib (161.50.1) <90A2A62F-8690-3FA7-A4D0-9085BF2FA44A> /usr/lib/system/libsystem_platform.dylib
    0x7fff5cef4000 -     0x7fff5cefffff  libsystem_pthread.dylib (301.50.1) <283E64A7-A2B2-3212-95BA-4D21F9AE36CF> /usr/lib/system/libsystem_pthread.dylib
    0x7fff5cf00000 -     0x7fff5cf03fff  libsystem_sandbox.dylib (765.70.2) <C29E1B7A-F39B-344E-98F7-8FB32B10AE0A> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff5cf04000 -     0x7fff5cf05ff3  libsystem_secinit.dylib (30) <4E84DF62-57B5-36F9-819F-3C1E7FEDA856> /usr/lib/system/libsystem_secinit.dylib
    0x7fff5cf06000 -     0x7fff5cf0dff7  libsystem_symptoms.dylib (820.60.3) <A45B4D84-2C69-3F19-83C2-2F1EEA73A7B5> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff5cf0e000 -     0x7fff5cf22ff7  libsystem_trace.dylib (829.70.2) <4C4E5351-E370-3226-9B30-61E250DE3B2E> /usr/lib/system/libsystem_trace.dylib
    0x7fff5cf24000 -     0x7fff5cf29ff7  libunwind.dylib (35.3) <BAE12DA3-CF33-32AD-86B0-CCD6705ADFAA> /usr/lib/system/libunwind.dylib
    0x7fff5cf2a000 -     0x7fff5cf57fff  libxpc.dylib (1205.70.16) <26D99819-B813-320E-9E8F-9D57AD2DA63B> /usr/lib/system/libxpc.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 188188
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=361.7M resident=0K(0%) swapped_out_or_unallocated=361.7M(100%)
Writable regions: Total=209.6M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=209.6M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               128K        2 
Activity Tracing                   256K        2 
CG backing stores                 37.4M        4 
CG image                           484K       17 
CoreAnimation                      644K       22 
CoreGraphics                         8K        2 
CoreImage                          108K        8 
CoreUI image data                 2064K       15 
CoreUI image file                  360K        6 
Dispatch continuations            16.0M        2 
Foundation                           4K        2 
Image IO                            64K        2 
Kernel Alloc Once                    8K        2 
MALLOC                           137.7M       35 
MALLOC guard page                   48K       10 
Memory Tag 242                      12K        2 
STACK GUARD                         40K       11 
Stack                             13.1M       12 
Stack (reserved)                  1596K        2         reserved VM address space (unallocated)
Stack Guard                       54.4M        2 
VM_ALLOCATE                        356K       18 
__DATA                            27.9M      256 
__FONT_DATA                          4K        2 
__LINKEDIT                       195.6M       20 
__TEXT                           166.1M      259 
__UNICODE                          560K        2 
mapped file                       70.9M       23 
shared memory                      740K       15 
===========                     =======  ======= 
TOTAL                            726.5M      727 
TOTAL, minus reserved VM space   725.0M      727 

Model: MacBookPro11,4, BootROM 199.0.0.0.0, 4 processors, Intel Core i7, 2.2 GHz, 16 GB, SMC 2.29f24
Graphics: Intel Iris Pro, Intel Iris Pro, Built-In
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x152), Broadcom BCM43xx 1.0 (7.77.37.33.1a1)
Bluetooth: Version 6.0.7f22, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0256G, 251 GB
USB Device: USB 3.0 Bus
USB Device: USB3.0 Hub
USB Device: Elements SE 25FE
USB Device: Elements 25A1
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Bluetooth USB Host Controller
USB Device: USB2.0 Hub
Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1

[-- Attachment #5: ns-fullscreen-with-toolbar.png --]
[-- Type: image/png, Size: 165734 bytes --]

^ permalink raw reply related	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-16  9:16               ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-26 19:56                 ` Alan Third
  2021-05-27 11:06                   ` Andrii Kolomoiets
  2021-06-05 20:58                   ` Alan Third
  0 siblings, 2 replies; 44+ messages in thread
From: Alan Third @ 2021-05-26 19:56 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Sun, May 16, 2021 at 07:16:54PM +1000, Paul W. Rankin wrote:
> On 2021-05-14 07:05, Alan Third wrote:
> > On Thu, May 13, 2021 at 03:46:54PM +1000, Paul W. Rankin via Emacs
> > development discussions. wrote:
> > > On 2021-05-13 07:23, Alan Third wrote:
> > > You're right and I can't find another macOS app with a tab bar that
> > > behaves
> > > the way Emacs.app does, so I gotta assume there is something somewhere
> > > overriding the Cocoa window manager behaviour. But I'm really only
> > > qualified
> > > to guess; I looked through nsterm.m and changed a few suspected BOOL
> > > values
> > > and recompiled a few times but nothing had an effect on the hidden
> > > tab bar.
> > > 
> > > Relatedly, tool-bar-mode is in the same boat; hidden in full screen,
> > > but
> > > probably shouldn't be.
> > 
> > Search in nsterm.m for "autohide", there are a couple of places where
> > hiding various bits and bobs is done, all related to fullscreen
> > afaict.
> > 
> > I'm not on a Mac just now or I'd try removing them all to see what it
> > does.
> 
> Looks like you're on the money!
> 
> I've attached two patches: 0001 is to remove the explicit setting of
> NSWindowTabbingModeDisallowed;

If you write up a wee NEWS entry, I'll be happy to push this change to
master and we can see is anyone shouts. :)

Please make sure to mention where to go to turn off tabbing.

> 0002 allows visibility of the toolbar and tab
> bar in fullscreen (screenshot attached), but reliably causes a segmentation
> fault with the following steps:
> 
> 1. System Preferences > Dock > Prefer tabs... [Always]
> 2. $ emacs -Q
> 3. M-x toggle-frame-full
> 4. M-x make-frame
> 5. M-x delete-frame
> 
> Attached crash.log.
> 
> Interestingly, calling delete-other-frames does not trigger a crash and when
> in windowed (non-fullscreen) a crash is only triggered with the following:
> 
> 1. System Preferences > Dock > Prefer tabs... [Always]
> 2. $ emacs -Q
> 3. M-x make-frame
> 4. M-x make-frame
> 5. click close background tab
> 6. wait for animation to finish
> 7. click close foreground tab

Hmm... My money is on something being accessed after being released...
It reminds me of some relatively recent fix we made, but I can't for
the life of me think what.

Anyway, I'm discussing with Andrii in another bug thread about
removing the pause that's built into fullscreen transitions so we may
want to wait for that to be sorted before we look further into crashes
that happen in the same place.

> There are three positions someone could take:
> 
> 1. wants tabs in all macOS apps including Emacs.app
> 2. does not want tabs in any macOS apps including Emacs.app
> 3. wants tabs in all other macOS except for Emacs.app
> 
> Anyone in categories 1 and 2 will be covered by the option in System
> Preferences. Given that all I think we're doing here is removing old barrier
> code to have Emacs function with an OS's native window manager, anyone in
> the third category would be putting the onus on themselves to write code for
> additional functionality.

Yes, I'm happy enough with this.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-26 19:56                 ` Alan Third
@ 2021-05-27 11:06                   ` Andrii Kolomoiets
  2021-05-28  8:26                     ` martin rudalics
  2021-06-05 20:58                   ` Alan Third
  1 sibling, 1 reply; 44+ messages in thread
From: Andrii Kolomoiets @ 2021-05-27 11:06 UTC (permalink / raw)
  To: Alan Third; +Cc: Paul W. Rankin, emacs-devel

Alan Third <alan@idiocy.org> writes:

> Anyway, I'm discussing with Andrii in another bug thread about
> removing the pause that's built into fullscreen transitions so we may
> want to wait for that to be sorted before we look further into crashes
> that happen in the same place.

I'm a little short on time at the moment.  I won't mind if someone beats
me on it :)

I didn't follow this thread closely, apologize if these questions was
discussed already, but here my two cents.

1. System Preferences > Dock > Prefer tabs... [Always]
2. emacs -Q
3. s-n
4. s-w

Repeat steps 3 and 4 few times, note how the frame height is increased.

1. System Preferences > Dock > Prefer tabs... [Always]
2. emacs -Q --execute "(push '(ns-transparent-titlebar . t) default-frame-alist)"
3. s-n

The new frame is created instead of new tab.

Maybe these use cases can be solved in separate patches.

Anyway, I really like that native macOS tabs support is coming to
Emacs.  Thanks!


--
Andrii



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-27 11:06                   ` Andrii Kolomoiets
@ 2021-05-28  8:26                     ` martin rudalics
  2021-05-28  8:28                       ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: martin rudalics @ 2021-05-28  8:26 UTC (permalink / raw)
  To: Andrii Kolomoiets, Alan Third; +Cc: Paul W. Rankin, emacs-devel

 > 1. System Preferences > Dock > Prefer tabs... [Always]
 > 2. emacs -Q
 > 3. s-n
 > 4. s-w

What do s-n and s-w do (which emacs function do they ultimately call)?

 > Repeat steps 3 and 4 few times, note how the frame height is increased.

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  8:26                     ` martin rudalics
@ 2021-05-28  8:28                       ` Paul W. Rankin via Emacs development discussions.
  2021-05-28  8:36                         ` martin rudalics
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-28  8:28 UTC (permalink / raw)
  To: martin rudalics; +Cc: Andrii Kolomoiets, Alan Third, emacs-devel


> On 28 May 2021, at 6:26 pm, martin rudalics <rudalics@gmx.at> wrote:
> 
> > 1. System Preferences > Dock > Prefer tabs... [Always]
> > 2. emacs -Q
> > 3. s-n
> > 4. s-w
> 
> What do s-n and s-w do (which emacs function do they ultimately call)?
> 
> > Repeat steps 3 and 4 few times, note how the frame height is increased.

s-n (make-frame)
s-w (delete-frame)



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  8:28                       ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-28  8:36                         ` martin rudalics
  2021-05-28  8:54                           ` Alan Third
  2021-05-28  9:07                           ` Andrii Kolomoiets
  0 siblings, 2 replies; 44+ messages in thread
From: martin rudalics @ 2021-05-28  8:36 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: Alan Third, Andrii Kolomoiets, emacs-devel

 >> What do s-n and s-w do (which emacs function do they ultimately call)?
 >>
 >>> Repeat steps 3 and 4 few times, note how the frame height is increased.
 >
 > s-n (make-frame)
 > s-w (delete-frame)

Hmm...  Then "the frame height" refers to the height of different
frames?  Does it always increase by the same amount?  Does it ever stop
to do that?

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  8:36                         ` martin rudalics
@ 2021-05-28  8:54                           ` Alan Third
  2021-06-06  4:09                             ` Paul W. Rankin via Emacs development discussions.
  2021-05-28  9:07                           ` Andrii Kolomoiets
  1 sibling, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-05-28  8:54 UTC (permalink / raw)
  To: martin rudalics; +Cc: Paul W. Rankin, Andrii Kolomoiets, emacs-devel

On Fri, May 28, 2021 at 10:36:07AM +0200, martin rudalics wrote:
> >> What do s-n and s-w do (which emacs function do they ultimately call)?
> >>
> >>> Repeat steps 3 and 4 few times, note how the frame height is increased.
> >
> > s-n (make-frame)
> > s-w (delete-frame)
> 
> Hmm...  Then "the frame height" refers to the height of different
> frames?  Does it always increase by the same amount?  Does it ever stop
> to do that?

Without having looked at it at all I'd imagine the problem is that the
tab-bar is an extra toolbar below the Emacs toolbar which we will need
to take into account when calculating the size of the various
components.

For example, IIRC, the height of the Emacs toolbar is calculated as
the height of the OS window minus the height of the Emacs view and the
titlebar. This is clearly not going to be right when we have an extra
widget in there.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  8:36                         ` martin rudalics
  2021-05-28  8:54                           ` Alan Third
@ 2021-05-28  9:07                           ` Andrii Kolomoiets
  2021-05-28  9:21                             ` martin rudalics
  1 sibling, 1 reply; 44+ messages in thread
From: Andrii Kolomoiets @ 2021-05-28  9:07 UTC (permalink / raw)
  To: martin rudalics; +Cc: Alan Third, Paul W. Rankin, emacs-devel

martin rudalics <rudalics@gmx.at> writes:

>>> What do s-n and s-w do (which emacs function do they ultimately call)?
>>>
>>>> Repeat steps 3 and 4 few times, note how the frame height is increased.
>>
>> s-n (make-frame)
>> s-w (delete-frame)
>
> Hmm...  Then "the frame height" refers to the height of different
> frames?  Does it always increase by the same amount?

All Emacs frames are grouped in single window manager window.  I refer
to that window manager window as frame.

Initially the tab bar is hidden.  After new frame created (s-n), the tab
bar is shown with two tabs, frame height is increased by the tab bar
height.  After frame deleted (s-w), tab bar become hidden again but
frame height is not decreased.


-- 
Andrii



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  9:07                           ` Andrii Kolomoiets
@ 2021-05-28  9:21                             ` martin rudalics
  2021-05-28  9:37                               ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: martin rudalics @ 2021-05-28  9:21 UTC (permalink / raw)
  To: Andrii Kolomoiets; +Cc: Alan Third, Paul W. Rankin, emacs-devel

 > All Emacs frames are grouped in single window manager window.  I refer
 > to that window manager window as frame.

I'm afraid that will confuse us.  Let's call that WM-frame.

 > Initially the tab bar is hidden.  After new frame created (s-n), the tab
 > bar is shown with two tabs,

Why?  Have you `tab-bar-mode' turned on or have you set the
`tab-bar-lines' frame parameter?

 > frame height is increased by the tab bar
 > height.

That's intentional: We do that to produce the initial frame height as
specified.  What does (frame-height) give after that frame has become
visible?

 > After frame deleted (s-w), tab bar become hidden again but
 > frame height is not decreased.

That's intentional again.  If the tab bar has been shown once, the
"native" height of its frame should remain constant when toggling or
wrapping the tab bar.  Just like the internal tool bar on Lucid or
Windows builds.

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  9:21                             ` martin rudalics
@ 2021-05-28  9:37                               ` Paul W. Rankin via Emacs development discussions.
  2021-05-28  9:51                                 ` martin rudalics
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-28  9:37 UTC (permalink / raw)
  To: martin rudalics; +Cc: Andrii Kolomoiets, Alan Third, emacs-devel


> On 28 May 2021, at 7:21 pm, martin rudalics <rudalics@gmx.at> wrote:
> 
> > Initially the tab bar is hidden.  After new frame created (s-n), the tab
> > bar is shown with two tabs,
> 
> Why?  Have you `tab-bar-mode' turned on or have you set the
> `tab-bar-lines' frame parameter?

It's important to note that this is not related to `tab-bar-mode'. These tabs are part of the OS's native window manager chrome.


^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  9:37                               ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-28  9:51                                 ` martin rudalics
  2021-05-28 14:33                                   ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: martin rudalics @ 2021-05-28  9:51 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: Alan Third, Andrii Kolomoiets, emacs-devel

 >> Why?  Have you `tab-bar-mode' turned on or have you set the
 >> `tab-bar-lines' frame parameter?
 >
 > It's important to note that this is not related to `tab-bar-mode'. These tabs are part of the OS's native window manager chrome.

I see.  So what does really "grow" and not "shrink": The window manager
frame or the Emacs frame?  If it's the former, then the behavior should
be seen by displaying any other application's windows in the window
manager frame and the behavior is not Emacs specific.  Right?

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  9:51                                 ` martin rudalics
@ 2021-05-28 14:33                                   ` Paul W. Rankin via Emacs development discussions.
  2021-05-28 20:52                                     ` Andrii Kolomoiets
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-05-28 14:33 UTC (permalink / raw)
  To: martin rudalics; +Cc: Andrii Kolomoiets, Alan Third, emacs-devel


> On 28 May 2021, at 7:51 pm, martin rudalics <rudalics@gmx.at> wrote:
> 
> >> Why?  Have you `tab-bar-mode' turned on or have you set the
> >> `tab-bar-lines' frame parameter?
> >
> > It's important to note that this is not related to `tab-bar-mode'. These tabs are part of the OS's native window manager chrome.
> 
> I see.  So what does really "grow" and not "shrink": The window manager
> frame or the Emacs frame?  If it's the former, then the behavior should
> be seen by displaying any other application's windows in the window
> manager frame and the behavior is not Emacs specific.  Right?
> 
> martin

This might be best illustrated with a quick video showing how the Emacs.app frame behaves when creating a new tab vs a native macOS app:
https://f002.backblazeb2.com/file/pwr-share/emacs_nsterm.mov (16MB)


^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28 14:33                                   ` Paul W. Rankin via Emacs development discussions.
@ 2021-05-28 20:52                                     ` Andrii Kolomoiets
  0 siblings, 0 replies; 44+ messages in thread
From: Andrii Kolomoiets @ 2021-05-28 20:52 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: martin rudalics, Alan Third, emacs-devel

"Paul W. Rankin" <pwr@bydasein.com> writes:

>> On 28 May 2021, at 7:51 pm, martin rudalics <rudalics@gmx.at> wrote:
>> 
>> >> Why?  Have you `tab-bar-mode' turned on or have you set the
>> >> `tab-bar-lines' frame parameter?
>> >
>> > It's important to note that this is not related to
>> > `tab-bar-mode'. These tabs are part of the OS's native window
>> > manager chrome.
>> 
>> I see.  So what does really "grow" and not "shrink": The window manager
>> frame or the Emacs frame?  If it's the former, then the behavior should
>> be seen by displaying any other application's windows in the window
>> manager frame and the behavior is not Emacs specific.  Right?
>> 
>
> This might be best illustrated with a quick video showing how the
> Emacs.app frame behaves when creating a new tab vs a native macOS app:

Also check out the Terminal.app behavior.  It restores the WM-frame size
once tab bar is hidden.


-- 
Andrii



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-26 19:56                 ` Alan Third
  2021-05-27 11:06                   ` Andrii Kolomoiets
@ 2021-06-05 20:58                   ` Alan Third
  2021-06-06  4:01                     ` Paul W. Rankin via Emacs development discussions.
  1 sibling, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-06-05 20:58 UTC (permalink / raw)
  To: Paul W. Rankin, emacs-devel

On Wed, May 26, 2021 at 08:56:19PM +0100, Alan Third wrote:
> On Sun, May 16, 2021 at 07:16:54PM +1000, Paul W. Rankin wrote:
> > 
> > I've attached two patches: 0001 is to remove the explicit setting of
> > NSWindowTabbingModeDisallowed;
> 
> If you write up a wee NEWS entry, I'll be happy to push this change to
> master and we can see is anyone shouts. :)
> 
> Please make sure to mention where to go to turn off tabbing.

Hi Paul, did you get a chance to add a NEWS entry? If you don't have
the time (or feel confident enough), please send a small
description of what's changed and how to disable the tab-bar and I'll
finish it up.

-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-05 20:58                   ` Alan Third
@ 2021-06-06  4:01                     ` Paul W. Rankin via Emacs development discussions.
  2021-06-06  6:14                       ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-06  4:01 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 775 bytes --]


> On 6 Jun 2021, at 6:58 am, Alan Third <alan@idiocy.org> wrote:
> 
> On Wed, May 26, 2021 at 08:56:19PM +0100, Alan Third wrote:
>> On Sun, May 16, 2021 at 07:16:54PM +1000, Paul W. Rankin wrote:
>>> 
>>> I've attached two patches: 0001 is to remove the explicit setting of
>>> NSWindowTabbingModeDisallowed;
>> 
>> If you write up a wee NEWS entry, I'll be happy to push this change to
>> master and we can see is anyone shouts. :)
>> 
>> Please make sure to mention where to go to turn off tabbing.
> 
> Hi Paul, did you get a chance to add a NEWS entry? If you don't have
> the time (or feel confident enough), please send a small
> description of what's changed and how to disable the tab-bar and I'll
> finish it up.

Hi Alan,

Sorry I was just being lazy. Attached!


[-- Attachment #2: 0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch --]
[-- Type: application/octet-stream, Size: 2074 bytes --]

From 41fafc79a7371be9244460fca0c6b8d3c053de8c Mon Sep 17 00:00:00 2001
From: "Paul W. Rankin" <pwr@bydasein.com>
Date: Sat, 8 May 2021 19:09:59 +1000
Subject: [PATCH] src/nsterm.m: fix window tabbing on macOS

* src/nsterm.m: remove NSWindowTabbingModeDisallowed to respect
  system-wide preferences
* etc/NEWS: add mention of native tab support in macOS and where
  to specify system-wide setting
---
 etc/NEWS     | 8 ++++++++
 src/nsterm.m | 8 --------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 32d7c4fe18..a3073d2033 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3110,6 +3110,14 @@ The new variable 'xwidget-webkit-download-dir' says where to download to.
 'module-file-suffix' now has the value ".dylib" on macOS, but the
 ".so" suffix is supported as well.
 
++++
+** On macOS, Emacs now supports native tabs (available in macOS 10.12
+and later).  Native tabbing behavior is specified system-wide via
+System Preferences, under under General > 'Prefer tabs when opening
+documents'. In macOS versions 10.15 and earlier, this option is
+located under Dock instead. Note that this feature is unrelated to the
+Emacs 'tab-bar-mode'.
+
 +++
 ** On MS-Windows, Emacs can now toggle the IME.
 A new function 'w32-set-ime-open-status' can now be used to disable
diff --git a/src/nsterm.m b/src/nsterm.m
index bb20886ab1..5fd4885801 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7628,14 +7628,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
          selector:@selector (viewDidResize:)
              name:NSViewFrameDidChangeNotification object:nil];
 
-  /* macOS Sierra automatically enables tabbed windows.  We can't
-     allow this to be enabled until it's available on a Free system.
-     Currently it only happens by accident and is buggy anyway.  */
-#ifdef NS_IMPL_COCOA
-  if ([win respondsToSelector: @selector(setTabbingMode:)])
-    [win setTabbingMode: NSWindowTabbingModeDisallowed];
-#endif
-
   ns_window_num++;
   return self;
 }
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-05-28  8:54                           ` Alan Third
@ 2021-06-06  4:09                             ` Paul W. Rankin via Emacs development discussions.
  2021-06-06  7:43                               ` martin rudalics
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-06  4:09 UTC (permalink / raw)
  To: Alan Third; +Cc: martin rudalics, Andrii Kolomoiets, emacs-devel



> On 28 May 2021, at 6:54 pm, Alan Third <alan@idiocy.org> wrote:
> 
> On Fri, May 28, 2021 at 10:36:07AM +0200, martin rudalics wrote:
>>>> What do s-n and s-w do (which emacs function do they ultimately call)?
>>>> 
>>>>> Repeat steps 3 and 4 few times, note how the frame height is increased.
>>> 
>>> s-n (make-frame)
>>> s-w (delete-frame)
>> 
>> Hmm...  Then "the frame height" refers to the height of different
>> frames?  Does it always increase by the same amount?  Does it ever stop
>> to do that?
> 
> Without having looked at it at all I'd imagine the problem is that the
> tab-bar is an extra toolbar below the Emacs toolbar which we will need
> to take into account when calculating the size of the various
> components.
> 
> For example, IIRC, the height of the Emacs toolbar is calculated as
> the height of the OS window minus the height of the Emacs view and the
> titlebar. This is clearly not going to be right when we have an extra
> widget in there.

Fwiw, most native macOS app windows can show/hide their toolbar, and when they do this, the window itself maintains overall size. However in Emacs when toggling tool-bar-mode the window grows/shrinks in overall size (i.e. maintains window lines).

So I guess one of the questions here is whether to do these height calculation to maintain overall window size (and thus consistency with the OS) or to maintain visible window lines.

Sorry I would like to provide more insights here but I'm still at the very early stages of learning C.


^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06  4:01                     ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-06  6:14                       ` Eli Zaretskii
  2021-06-06  6:48                         ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2021-06-06  6:14 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: alan, emacs-devel

> Feedback-ID: 791:353:null:purelymail
> Date: Sun, 6 Jun 2021 14:01:26 +1000
> Cc: emacs-devel@gnu.org
> From:  "Paul W. Rankin" via "Emacs development discussions." <emacs-devel@gnu.org>
> 
> ++++
> +** On macOS, Emacs now supports native tabs (available in macOS 10.12
> +and later).  Native tabbing behavior is specified system-wide via
> +System Preferences, under under General > 'Prefer tabs when opening
> +documents'. In macOS versions 10.15 and earlier, this option is
> +located under Dock instead. Note that this feature is unrelated to the
> +Emacs 'tab-bar-mode'.

Thanks.  A minor nit: since NEWS is displayed in Outline mode, the
first sentence of any entry is its heading, and should not take more
than one line.  If you have some details that make it longer, move
those details to the subsequent lines.  For example:

  ** On macOS, Emacs now supports native tabs.
  These tabs are available in macOS 10.12 and later.
  ...




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06  6:14                       ` Eli Zaretskii
@ 2021-06-06  6:48                         ` Paul W. Rankin via Emacs development discussions.
  2021-06-06  9:13                           ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-06  6:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Alan Third, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1104 bytes --]


> On 6 Jun 2021, at 4:14 pm, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> Feedback-ID: 791:353:null:purelymail
>> Date: Sun, 6 Jun 2021 14:01:26 +1000
>> Cc: emacs-devel@gnu.org
>> From:  "Paul W. Rankin" via "Emacs development discussions." <emacs-devel@gnu.org>
>> 
>> ++++
>> +** On macOS, Emacs now supports native tabs (available in macOS 10.12
>> +and later).  Native tabbing behavior is specified system-wide via
>> +System Preferences, under under General > 'Prefer tabs when opening
>> +documents'. In macOS versions 10.15 and earlier, this option is
>> +located under Dock instead. Note that this feature is unrelated to the
>> +Emacs 'tab-bar-mode'.
> 
> Thanks.  A minor nit: since NEWS is displayed in Outline mode, the
> first sentence of any entry is its heading, and should not take more
> than one line.  If you have some details that make it longer, move
> those details to the subsequent lines.  For example:
> 
>  ** On macOS, Emacs now supports native tabs.
>  These tabs are available in macOS 10.12 and later.
>  ...

No problemo. Revised patch attached.


[-- Attachment #2: 0001-src-nsterm.m-fix-window-tabbing-on-macOS.patch --]
[-- Type: application/octet-stream, Size: 2063 bytes --]

From b2a9842399c3eafccab1964764ad383a37f26b11 Mon Sep 17 00:00:00 2001
From: "Paul W. Rankin" <pwr@bydasein.com>
Date: Sat, 8 May 2021 19:09:59 +1000
Subject: [PATCH] src/nsterm.m: fix window tabbing on macOS

* src/nsterm.m: remove NSWindowTabbingModeDisallowed to respect
  system-wide preferences
* etc/NEWS: add mention of native tab support in macOS and where
  to specify system-wide setting
---
 etc/NEWS     | 8 ++++++++
 src/nsterm.m | 8 --------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 32d7c4fe18..278cc5ea3c 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3110,6 +3110,14 @@ The new variable 'xwidget-webkit-download-dir' says where to download to.
 'module-file-suffix' now has the value ".dylib" on macOS, but the
 ".so" suffix is supported as well.
 
++++
+** On macOS, Emacs now supports native tabs (in macOS 10.12 and later).
+Native tabbing behavior is specified system-wide via System
+Preferences, under under General > 'Prefer tabs when opening
+documents'. In macOS versions 10.15 and earlier, this option is
+located under Dock instead. Note that this feature is unrelated to the
+Emacs 'tab-bar-mode'.
+
 +++
 ** On MS-Windows, Emacs can now toggle the IME.
 A new function 'w32-set-ime-open-status' can now be used to disable
diff --git a/src/nsterm.m b/src/nsterm.m
index bb20886ab1..5fd4885801 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7628,14 +7628,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
          selector:@selector (viewDidResize:)
              name:NSViewFrameDidChangeNotification object:nil];
 
-  /* macOS Sierra automatically enables tabbed windows.  We can't
-     allow this to be enabled until it's available on a Free system.
-     Currently it only happens by accident and is buggy anyway.  */
-#ifdef NS_IMPL_COCOA
-  if ([win respondsToSelector: @selector(setTabbingMode:)])
-    [win setTabbingMode: NSWindowTabbingModeDisallowed];
-#endif
-
   ns_window_num++;
   return self;
 }
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06  4:09                             ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-06  7:43                               ` martin rudalics
  0 siblings, 0 replies; 44+ messages in thread
From: martin rudalics @ 2021-06-06  7:43 UTC (permalink / raw)
  To: Paul W. Rankin, Alan Third; +Cc: Andrii Kolomoiets, emacs-devel

 > Fwiw, most native macOS app windows can show/hide their toolbar, and
 > when they do this, the window itself maintains overall size. However
 > in Emacs when toggling tool-bar-mode the window grows/shrinks in
 > overall size (i.e. maintains window lines).
 >
 > So I guess one of the questions here is whether to do these height
 > calculation to maintain overall window size (and thus consistency with
 > the OS) or to maintain visible window lines.

The value of `frame-inhibit-implied-resize' should answer that question.

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06  6:48                         ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-06  9:13                           ` Alan Third
       [not found]                             ` <8CCF969D-32AF-4542-8838-21DF4AA45523@yasufuku.dev>
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-06-06  9:13 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: Eli Zaretskii, emacs-devel

On Sun, Jun 06, 2021 at 04:48:32PM +1000, Paul W. Rankin wrote:
> 
> No problemo. Revised patch attached.

Thanks. I've pushed it to master.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
       [not found]                             ` <8CCF969D-32AF-4542-8838-21DF4AA45523@yasufuku.dev>
@ 2021-06-06 11:36                               ` Alan Third
  2021-06-06 12:19                                 ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-06-06 11:36 UTC (permalink / raw)
  To: Naofumi Yasufuku; +Cc: Eli Zaretskii, Paul W. Rankin, emacs-devel

On Sun, Jun 06, 2021 at 07:07:53PM +0900, Naofumi Yasufuku wrote:
> 
> > On Jun 6, 2021, at 18:13, Alan Third <alan@idiocy.org> wrote:
> > 
> > On Sun, Jun 06, 2021 at 04:48:32PM +1000, Paul W. Rankin wrote:
> >> 
> >> No problemo. Revised patch attached.
> > 
> > Thanks. I've pushed it to master.
> 
> I found the following issues with this macOS native tab commit.
> Does anyone else encounter the same problems?
> 
> 1) Frame height increases (even if frame-inhibit-implied-resize is t).
>   attachment:
>     01_macOS-tab-issue-increases-height.gif
>     01_macOS-tab-issue-increases-height-2.gif … (sets frame-inhibit-implied-resize t)

Strangely I don't see this. The frame stays the same height...

> 2) New tab name is ‘emacs’ instead of buffer name.
>     (even if C-x 5 C-f `find-file-other-frame’)
>   attachment:
>     02_macOS-tab-issue-odd-tab-name.gif

It turns out that when multiple NSViews are put into one NSWindow
using tabs, AppKit doesn't bother telling all the views to update
themselves when the window changes, it appears to only message the
currently visible one. This is a problem.

The tab name issue can be sorted with this change:

modified   src/nsfns.m
@@ -407,6 +407,9 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side.
   if (! [[[view window] title] isEqualToString: str])
     [[view window] setTitle: str];
 
+  if ([[view window] tab])
+    [[[view window] tab] setTitle: str];
+
   if (STRINGP (f->icon_name))
     str = [NSString stringWithLispString: f->icon_name];
 
but the overall window title ends up stuck with something nonsensical.
It's even when worse if you resize the frame manually with the mouse.

I don't know how to fix that.

> 3) Tabs are not shown in fullscreen.
>   attachment:
>     03_macOS-tab-fullscreen-expected-textedit.gif. .. e.g. macOS Test Edit app
>     03_macOS-tab-issue-fullscreen-emacs.gif

Works as expected here. Since the window chrome isn't shown in
fullscreen mode, the tab bar isn't shown.

> 4) Doom modeline is not get focused when tab is closed.
>   This could be a ‘doom-modeline’ problem.
>   attachment:
>     04_macOS-tab-issue-doom-modeline-focus.gif

That looks like it's probably related to some old bug we have open
where in certain circumstances the frame isn't shown as being the
selected frame, despite being the key frame as far as AppKit is
concerned.

> 5) Native tabbing doesn’t work with (ns-transparent-titlebar . t) frame parameter.
>     This could be a limitation of macOS, and expected behavior.

At a guess you'll need to set all frames to have a transparent
titlebar, but perhaps there's more to it than that...
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06 11:36                               ` Alan Third
@ 2021-06-06 12:19                                 ` Paul W. Rankin via Emacs development discussions.
  2021-06-06 18:56                                   ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-06 12:19 UTC (permalink / raw)
  To: Alan Third; +Cc: Naofumi Yasufuku, Eli Zaretskii, emacs-devel


> On 6 Jun 2021, at 9:36 pm, Alan Third <alan@idiocy.org> wrote:
> 
> On Sun, Jun 06, 2021 at 07:07:53PM +0900, Naofumi Yasufuku wrote:
>> 
>> I found the following issues with this macOS native tab commit.
>> Does anyone else encounter the same problems?
>> 
>> 1) Frame height increases (even if frame-inhibit-implied-resize is t).
>>  attachment:
>>    01_macOS-tab-issue-increases-height.gif
>>    01_macOS-tab-issue-increases-height-2.gif … (sets frame-inhibit-implied-resize t)
> 
> Strangely I don't see this. The frame stays the same height...

Alan did you see my video of this in action?
https://f002.backblazeb2.com/file/pwr-share/emacs_nsterm.mov


>> 2) New tab name is ‘emacs’ instead of buffer name.
>>    (even if C-x 5 C-f `find-file-other-frame’)
>>  attachment:
>>    02_macOS-tab-issue-odd-tab-name.gif
> 
> It turns out that when multiple NSViews are put into one NSWindow
> using tabs, AppKit doesn't bother telling all the views to update
> themselves when the window changes, it appears to only message the
> currently visible one. This is a problem.
> 
> The tab name issue can be sorted with this change:
> ...

Interestingly this only happens with tool-bar-mode on. With eamcs -Q (tool-bar-mode 0) new frames/tabs get the correct name. Which makes me wonder if it's another case of some code somewhere interfering?

>> 3) Tabs are not shown in fullscreen.
>>  attachment:
>>    03_macOS-tab-fullscreen-expected-textedit.gif. .. e.g. macOS Test Edit app
>>    03_macOS-tab-issue-fullscreen-emacs.gif

Yeah we're considering this a separate nice-to-have, right?





^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06 12:19                                 ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-06 18:56                                   ` Alan Third
  2021-06-07  0:27                                     ` Paul W. Rankin via Emacs development discussions.
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-06-06 18:56 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: Eli Zaretskii, emacs-devel, Naofumi Yasufuku

On Sun, Jun 06, 2021 at 10:19:57PM +1000, Paul W. Rankin wrote:
> 
> > On 6 Jun 2021, at 9:36 pm, Alan Third <alan@idiocy.org> wrote:
> > 
> > On Sun, Jun 06, 2021 at 07:07:53PM +0900, Naofumi Yasufuku wrote:
> >> 
> >> I found the following issues with this macOS native tab commit.
> >> Does anyone else encounter the same problems?
> >> 
> >> 1) Frame height increases (even if frame-inhibit-implied-resize is t).
> >>  attachment:
> >>    01_macOS-tab-issue-increases-height.gif
> >>    01_macOS-tab-issue-increases-height-2.gif … (sets frame-inhibit-implied-resize t)
> > 
> > Strangely I don't see this. The frame stays the same height...
> 
> Alan did you see my video of this in action?
> https://f002.backblazeb2.com/file/pwr-share/emacs_nsterm.mov

Yeah, I was wrong, it is there and it's very annoying. I think there's
a mismatch between the calculation of the height of the content and
the actual height of the content. But if it's that I have no idea why
it disappears when the toolbar is turned off, because the calculation
should still be wrong.

> >> 2) New tab name is ‘emacs’ instead of buffer name.
> >>    (even if C-x 5 C-f `find-file-other-frame’)
> >>  attachment:
> >>    02_macOS-tab-issue-odd-tab-name.gif
> > 
> > It turns out that when multiple NSViews are put into one NSWindow
> > using tabs, AppKit doesn't bother telling all the views to update
> > themselves when the window changes, it appears to only message the
> > currently visible one. This is a problem.
> > 
> > The tab name issue can be sorted with this change:
> > ...
> 
> Interestingly this only happens with tool-bar-mode on. With eamcs -Q
> (tool-bar-mode 0) new frames/tabs get the correct name. Which makes
> me wonder if it's another case of some code somewhere interfering?

They don't here. The non-selected frame ends up with the wrong name
whether the toolbar is on or off.

> >> 3) Tabs are not shown in fullscreen.
> >>  attachment:
> >>    03_macOS-tab-fullscreen-expected-textedit.gif. .. e.g. macOS Test Edit app
> >>    03_macOS-tab-issue-fullscreen-emacs.gif
> 
> Yeah we're considering this a separate nice-to-have, right?

Yeah, the tabs work exactly as I'd expect them to in fullscreen given
the way fullscreen works just now.

I have to say I've spent most of the afternoon on this and I'm no
closer to a solution to the height changing thing, so I'm tempted to
revert the commit, or put it behind a build flag or something until we
have a better solution.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
       [not found] <65f1-60bcfd80-157-23301c40@168015757>
@ 2021-06-07  0:11 ` Paul W. Rankin via Emacs development discussions.
  2021-06-07 21:57   ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-07  0:11 UTC (permalink / raw)
  To: Naofumi Yasufuku; +Cc: Alan Third, Eli Zaretskii, emacs-devel


> On 7 Jun 2021, at 2:52 am, naofumi@yasufuku.dev wrote:
> 
> After this nsterm.m change for native tabs, I cannot realize the previous
> fullscreen frame behavior with macOS system preference 'Prefer tabs' settings.
> 
> 
> I think this native tabs feature should be choosable by user, as Alan said:

*It is* choosable by the user, via System Preferences. Please see the original discussion here:

> There are three positions someone could take:
> 
> 1. wants tabs in all macOS apps including Emacs.app
> 2. does not want tabs in any macOS apps including Emacs.app
> 3. wants tabs in all other macOS except for Emacs.app
> 
> Anyone in categories 1 and 2 will be covered by the option in System Preferences. Given that all I think we're doing here is removing old barrier code to have Emacs function with an OS's native window manager, anyone in the third category would be putting the onus on themselves to write code for additional functionality.

If you fall into the last category you cannot expect that the commit is reverted thus prohibiting every other person (including me) from using the native tabs just because you want some esoteric behaviour.

What should have been clear from the discussion is that achieving optimal native tab behaviour on macOS is going to be a *multi-step process*. This is just the first step. You are of course welcome to submit your own patches in the continuation of this process.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-06 18:56                                   ` Alan Third
@ 2021-06-07  0:27                                     ` Paul W. Rankin via Emacs development discussions.
  2021-06-07 22:13                                       ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-07  0:27 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel


> On 7 Jun 2021, at 4:56 am, Alan Third <alan@idiocy.org> wrote:
> 
> On Sun, Jun 06, 2021 at 10:19:57PM +1000, Paul W. Rankin wrote:
> 
>> Alan did you see my video of this in action?
>> https://f002.backblazeb2.com/file/pwr-share/emacs_nsterm.mov
> 
> Yeah, I was wrong, it is there and it's very annoying. I think there's
> a mismatch between the calculation of the height of the content and
> the actual height of the content. But if it's that I have no idea why
> it disappears when the toolbar is turned off, because the calculation
> should still be wrong.

I've forgotten, what macOS version are you on? macOS 11 combines native toolbars in with the titlebar, so I suspect that the calculations Emacs is doing expect a separate titlebar and toolbar.

>> Yeah we're considering this a separate nice-to-have, right?
> 
> Yeah, the tabs work exactly as I'd expect them to in fullscreen given
> the way fullscreen works just now.
> 
> I have to say I've spent most of the afternoon on this and I'm no
> closer to a solution to the height changing thing, so I'm tempted to
> revert the commit, or put it behind a build flag or something until we
> have a better solution.

I do not think that is necessary. I'm going to go out on a limb here and speculate that the problem lies with the way Emacs is calculating its frame size, not with the OS window manager. The heart of it is, someone can open up Xcode and whip up a demo app with zero code that will function perfectly well with native tabs, it's not functionality that a program needs to implement, so whatever it is with Emacs that is interfering with or overriding that functionality has been added in between.


^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-07  0:11 ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-07 21:57   ` Alan Third
  0 siblings, 0 replies; 44+ messages in thread
From: Alan Third @ 2021-06-07 21:57 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: Eli Zaretskii, emacs-devel, Naofumi Yasufuku

On Mon, Jun 07, 2021 at 10:11:17AM +1000, Paul W. Rankin wrote:
> 
> > On 7 Jun 2021, at 2:52 am, naofumi@yasufuku.dev wrote:
> > 
> > After this nsterm.m change for native tabs, I cannot realize the previous
> > fullscreen frame behavior with macOS system preference 'Prefer tabs' settings.
> > 
> > 
> > I think this native tabs feature should be choosable by user, as Alan said:
> 
> *It is* choosable by the user, via System Preferences. Please see the original discussion here:

No, for some reason the fullscreen new-frame behaviour changes and
modifying the system settings doesn't revert it.

-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-07  0:27                                     ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-07 22:13                                       ` Alan Third
  2021-06-08  7:32                                         ` Paul W. Rankin via Emacs development discussions.
  2021-06-09  8:35                                         ` martin rudalics
  0 siblings, 2 replies; 44+ messages in thread
From: Alan Third @ 2021-06-07 22:13 UTC (permalink / raw)
  To: Paul W. Rankin; +Cc: emacs-devel

On Mon, Jun 07, 2021 at 10:27:42AM +1000, Paul W. Rankin wrote:
> 
> > On 7 Jun 2021, at 4:56 am, Alan Third <alan@idiocy.org> wrote:
> > 
> > On Sun, Jun 06, 2021 at 10:19:57PM +1000, Paul W. Rankin wrote:
> > 
> >> Alan did you see my video of this in action?
> >> https://f002.backblazeb2.com/file/pwr-share/emacs_nsterm.mov
> > 
> > Yeah, I was wrong, it is there and it's very annoying. I think there's
> > a mismatch between the calculation of the height of the content and
> > the actual height of the content. But if it's that I have no idea why
> > it disappears when the toolbar is turned off, because the calculation
> > should still be wrong.
> 
> I've forgotten, what macOS version are you on? macOS 11 combines
> native toolbars in with the titlebar, so I suspect that the
> calculations Emacs is doing expect a separate titlebar and toolbar.

10.14

Emacs does calculate the titlebar and toolbar heights, and it's pretty
good at it, frankly, except that the toolbar height includes the
tab-bar height as well, and I can't see any way round that because
neither the toolbar, nor the tab-bar are accessible as views. I don't
think that really matters, though.

The only explanation I can come up with is that there's some strange
interaction between the frame size when it's created, when the toolbar
hasn't been created yet so has zero height, and then putting that
window into the tab group.

> >> Yeah we're considering this a separate nice-to-have, right?
> > 
> > Yeah, the tabs work exactly as I'd expect them to in fullscreen given
> > the way fullscreen works just now.
> > 
> > I have to say I've spent most of the afternoon on this and I'm no
> > closer to a solution to the height changing thing, so I'm tempted to
> > revert the commit, or put it behind a build flag or something until we
> > have a better solution.
> 
> I do not think that is necessary. I'm going to go out on a limb here
> and speculate that the problem lies with the way Emacs is
> calculating its frame size, not with the OS window manager. The
> heart of it is, someone can open up Xcode and whip up a demo app
> with zero code that will function perfectly well with native tabs,
> it's not functionality that a program needs to implement, so
> whatever it is with Emacs that is interfering with or overriding
> that functionality has been added in between.

That goes without saying, but the fact of the matter is that we're
failing miserably to convince Emacs and the tab-bar to live together
in harmony. There's very little code in the ns*.m files that tries to
calculate the height of the frame, and nothing I do to it makes the
slightest bit of a difference to how the frame is drawn with tabs
enabled.

The fact that when you enable and disable the toolbar the frame size
changes is also something I can't explain because Appkit doesn't even
give Emacs a chance to set the frame size, it just does it and it even
animates the change for us, and lets us know it's been done after the
event. Perhaps we've got something set somewhere that says that the
NSView can't be resized by Appkit? I don't know, I'm not aware of any
setting like that.

Unfortunately I think the current naive enabling of the native tabs
isn't working and needs more work, so I'm going to revert the change.
I'm not saying we can't have the native tabs, just that they need to
be better behaved before we enable them.

Please keep working on this.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-07 22:13                                       ` Alan Third
@ 2021-06-08  7:32                                         ` Paul W. Rankin via Emacs development discussions.
  2021-06-08  8:59                                           ` Eli Zaretskii
  2021-06-09  8:35                                         ` martin rudalics
  1 sibling, 1 reply; 44+ messages in thread
From: Paul W. Rankin via Emacs development discussions. @ 2021-06-08  7:32 UTC (permalink / raw)
  To: Alan Third; +Cc: emacs-devel


> On 8 Jun 2021, at 8:13 am, Alan Third <alan@idiocy.org> wrote:
> 
> Unfortunately I think the current naive enabling of the native tabs
> isn't working and needs more work, so I'm going to revert the change.
> I'm not saying we can't have the native tabs, just that they need to
> be better behaved before we enable them.

This is lunacy. I'm out. Good luck.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-08  7:32                                         ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-08  8:59                                           ` Eli Zaretskii
  0 siblings, 0 replies; 44+ messages in thread
From: Eli Zaretskii @ 2021-06-08  8:59 UTC (permalink / raw)
  To: Paul W. Rankin, Paul W. Rankin via Emacs development discussions.,
	Alan Third
  Cc: emacs-devel

On June 8, 2021 10:32:06 AM GMT+03:00, "Paul W. Rankin via Emacs development discussions." <emacs-devel@gnu.org> wrote:
> 
> This is lunacy.


Not a nice thing to say.  Please avoid such language here.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-07 22:13                                       ` Alan Third
  2021-06-08  7:32                                         ` Paul W. Rankin via Emacs development discussions.
@ 2021-06-09  8:35                                         ` martin rudalics
  2021-06-09  8:48                                           ` Alan Third
  1 sibling, 1 reply; 44+ messages in thread
From: martin rudalics @ 2021-06-09  8:35 UTC (permalink / raw)
  To: Alan Third, Paul W. Rankin, emacs-devel

 > The fact that when you enable and disable the toolbar the frame size
 > changes is also something I can't explain because Appkit doesn't even
 > give Emacs a chance to set the frame size, it just does it and it even
 > animates the change for us, and lets us know it's been done after the
 > event. Perhaps we've got something set somewhere that says that the
 > NSView can't be resized by Appkit? I don't know, I'm not aware of any
 > setting like that.

If you just used

   adjust_frame_size (f, -1, -1, 5, false, Qtool_bar_lines);

in ns_set_tool_bar_lines would that change anything?

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-09  8:35                                         ` martin rudalics
@ 2021-06-09  8:48                                           ` Alan Third
  2021-06-09 12:20                                             ` martin rudalics
  0 siblings, 1 reply; 44+ messages in thread
From: Alan Third @ 2021-06-09  8:48 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

On Wed, Jun 09, 2021 at 10:35:07AM +0200, martin rudalics wrote:
> > The fact that when you enable and disable the toolbar the frame size
> > changes is also something I can't explain because Appkit doesn't even
> > give Emacs a chance to set the frame size, it just does it and it even
> > animates the change for us, and lets us know it's been done after the
> > event. Perhaps we've got something set somewhere that says that the
> > NSView can't be resized by Appkit? I don't know, I'm not aware of any
> > setting like that.
> 
> If you just used
> 
>   adjust_frame_size (f, -1, -1, 5, false, Qtool_bar_lines);
> 
> in ns_set_tool_bar_lines would that change anything?

It doesn't make any difference to the frame resizing, but does make
the window display as a tiny 2x2 character block in the top left of
the frame, so I'm not sure it's doing what you intended.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-09  8:48                                           ` Alan Third
@ 2021-06-09 12:20                                             ` martin rudalics
  2021-06-09 12:29                                               ` Alan Third
  0 siblings, 1 reply; 44+ messages in thread
From: martin rudalics @ 2021-06-09 12:20 UTC (permalink / raw)
  To: Alan Third, emacs-devel

 >> If you just used
 >>
 >>    adjust_frame_size (f, -1, -1, 5, false, Qtool_bar_lines);
 >>
 >> in ns_set_tool_bar_lines would that change anything?
 >
 > It doesn't make any difference to the frame resizing, but does make
 > the window display as a tiny 2x2 character block in the top left of
 > the frame, so I'm not sure it's doing what you intended.

It's not.  What happens when you omit that call entirely?

martin



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: src/nsterm.m: fix window tabbing on macOS
  2021-06-09 12:20                                             ` martin rudalics
@ 2021-06-09 12:29                                               ` Alan Third
  0 siblings, 0 replies; 44+ messages in thread
From: Alan Third @ 2021-06-09 12:29 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

On Wed, Jun 09, 2021 at 02:20:34PM +0200, martin rudalics wrote:
> >> If you just used
> >>
> >>    adjust_frame_size (f, -1, -1, 5, false, Qtool_bar_lines);
> >>
> >> in ns_set_tool_bar_lines would that change anything?
> >
> > It doesn't make any difference to the frame resizing, but does make
> > the window display as a tiny 2x2 character block in the top left of
> > the frame, so I'm not sure it's doing what you intended.
> 
> It's not.  What happens when you omit that call entirely?

No change, still resizes when disabling/enabling the toolbar.

Like I said before, though, as far as I can tell Emacs isn't even
informed about the frame resizing until it's already done, so I don't
think we can change it through Emacs's core, I think it has to be a
change in the NS window or view setup.

I actually suspect that the apps that don't resize when the toolbar is
enabled or disabled are probably using automatic layout of their
contents, which we can't do.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2021-06-09 12:29 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-08  9:26 src/nsterm.m: fix window tabbing on macOS Paul W. Rankin via Emacs development discussions.
2021-05-08 11:21 ` Alan Third
2021-05-08 12:27   ` Paul W. Rankin via Emacs development discussions.
2021-05-08 12:35     ` Paul W. Rankin via Emacs development discussions.
2021-05-10 19:53     ` Alan Third
2021-05-11  5:45       ` Paul W. Rankin via Emacs development discussions.
2021-05-11 19:20         ` chad
2021-05-12  9:47           ` Paul W. Rankin via Emacs development discussions.
2021-05-12 21:23         ` Alan Third
2021-05-13  5:46           ` Paul W. Rankin via Emacs development discussions.
2021-05-13 21:05             ` Alan Third
2021-05-16  9:16               ` Paul W. Rankin via Emacs development discussions.
2021-05-26 19:56                 ` Alan Third
2021-05-27 11:06                   ` Andrii Kolomoiets
2021-05-28  8:26                     ` martin rudalics
2021-05-28  8:28                       ` Paul W. Rankin via Emacs development discussions.
2021-05-28  8:36                         ` martin rudalics
2021-05-28  8:54                           ` Alan Third
2021-06-06  4:09                             ` Paul W. Rankin via Emacs development discussions.
2021-06-06  7:43                               ` martin rudalics
2021-05-28  9:07                           ` Andrii Kolomoiets
2021-05-28  9:21                             ` martin rudalics
2021-05-28  9:37                               ` Paul W. Rankin via Emacs development discussions.
2021-05-28  9:51                                 ` martin rudalics
2021-05-28 14:33                                   ` Paul W. Rankin via Emacs development discussions.
2021-05-28 20:52                                     ` Andrii Kolomoiets
2021-06-05 20:58                   ` Alan Third
2021-06-06  4:01                     ` Paul W. Rankin via Emacs development discussions.
2021-06-06  6:14                       ` Eli Zaretskii
2021-06-06  6:48                         ` Paul W. Rankin via Emacs development discussions.
2021-06-06  9:13                           ` Alan Third
     [not found]                             ` <8CCF969D-32AF-4542-8838-21DF4AA45523@yasufuku.dev>
2021-06-06 11:36                               ` Alan Third
2021-06-06 12:19                                 ` Paul W. Rankin via Emacs development discussions.
2021-06-06 18:56                                   ` Alan Third
2021-06-07  0:27                                     ` Paul W. Rankin via Emacs development discussions.
2021-06-07 22:13                                       ` Alan Third
2021-06-08  7:32                                         ` Paul W. Rankin via Emacs development discussions.
2021-06-08  8:59                                           ` Eli Zaretskii
2021-06-09  8:35                                         ` martin rudalics
2021-06-09  8:48                                           ` Alan Third
2021-06-09 12:20                                             ` martin rudalics
2021-06-09 12:29                                               ` Alan Third
     [not found] <65f1-60bcfd80-157-23301c40@168015757>
2021-06-07  0:11 ` Paul W. Rankin via Emacs development discussions.
2021-06-07 21:57   ` Alan Third

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).