>From 3cc9491d301be0030b9a4c85bb2cfa0507f7e243 Mon Sep 17 00:00:00 2001 From: Charles A. Roelli Date: Mon, 10 Jul 2017 21:08:14 +0200 Subject: [PATCH] Enable GUI Emacs without 'make install' on macOS (Bug #27645) * nextstep/INSTALL: Correct it, and mention that Emacs can be run from 'src/emacs'. * src/nsterm.m (applicationDidFinishLaunching:): When Emacs is launched outside of a macOS application bundle, change its activation policy from the default 'prohibited' to 'regular'. ; * etc/NEWS: Mention the change on macOS. --- etc/NEWS | 3 +++ nextstep/INSTALL | 11 ++++++----- src/nsterm.m | 11 +++++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index a00760c..e1e6e15 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1516,6 +1516,9 @@ debugger has been attached to it. ** 'set-mouse-position' and 'set-mouse-absolute-pixel-position' work on macOS. +** Emacs can now be run as a GUI application from the command line on +macOS. + ---------------------------------------------------------------------- This file is part of GNU Emacs. diff --git a/nextstep/INSTALL b/nextstep/INSTALL index 799cd4d..9579987 100644 --- a/nextstep/INSTALL +++ b/nextstep/INSTALL @@ -17,14 +17,15 @@ Compilation In the top-level directory, use: - ./configure --with-ns + make -(On macOS, --with-ns is enabled by default.) +This will compile all the files. -This will compile all the files, but emacs will not be able to be run except -in -nw (terminal) mode. +In order to run Emacs, you must run: -In order to run Emacs.app, you must run: + src/emacs + +In order to install Emacs, you must run: make install diff --git a/src/nsterm.m b/src/nsterm.m index bf83550..c965e25 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5479,6 +5479,17 @@ - (void)applicationDidFinishLaunching: (NSNotification *)notification object:nil]; #endif + if ([NSApp activationPolicy] == NSApplicationActivationPolicyProhibited) { + /* Set the app's activation policy to regular when we run outside + of a bundle. This is already done for us by Info.plist when we + run inside a bundle. */ + [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + [NSApp setApplicationIconImage: + [EmacsImage + allocInitFromFile: + build_string("icons/hicolor/128x128/apps/emacs.png")]]; + } + ns_send_appdefined (-2); } -- 1.7.4.4