merging Emacs.app (NeXTstep port)
This commit is contained in:
parent
1391cd5487
commit
edfda78355
97 changed files with 20892 additions and 307 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
Changes and additions for NeXTstep windowing system (Cocoa and
|
||||
GNUstep) support.
|
||||
|
||||
* configure.in: Add support for NS window system: --with-ns (default
|
||||
off), --enable-ns-app, --enable-cocoa-experimental-ctrl-g; improve add
|
||||
sparc detection for FreeBSD variants, checks for Cocoa and GNUstep,
|
||||
disable font backend if window system is "none", not if !HAVE_X11.
|
||||
* Makefile.in: Add ns-emacs to INFO_FILES, add ns_appdir variable.
|
||||
(install-arch-dep): Add commands to assemble NS .app package.
|
||||
|
||||
2008-07-10 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* configure.in: Use macppc for Darwin. Remove references to
|
||||
|
|
13
Makefile.in
13
Makefile.in
|
@ -137,7 +137,7 @@ man1dir=$(mandir)/man1
|
|||
infodir=@infodir@
|
||||
INFO_FILES=ada-mode autotype calc ccmode cl dbus dired-x ebrowse ediff \
|
||||
efaq eintr elisp emacs emacs-mime epa erc eshell eudc \
|
||||
flymake forms gnus idlwave info message mh-e newsticker \
|
||||
flymake forms gnus idlwave info message mh-e newsticker ns-emacs \
|
||||
nxml-mode org pcl-cvs pgg rcirc reftex remember sasl sc ses \
|
||||
sieve speedbar tramp vip viper widget woman smtpmail url
|
||||
|
||||
|
@ -167,6 +167,9 @@ x_default_search_path=@x_default_search_path@
|
|||
# Location to install Emacs.app on Mac OS X
|
||||
carbon_appdir=@carbon_appdir@
|
||||
|
||||
# Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
|
||||
ns_appdir=@ns_appdir@
|
||||
|
||||
# Where the etc/emacs.desktop file is to be installed.
|
||||
desktopdir=$(datarootdir)/applications
|
||||
|
||||
|
@ -411,6 +414,14 @@ install-arch-dep: mkdir
|
|||
(cd $(DESTDIR)${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \
|
||||
&& cat > /dev/null))) || exit 1; \
|
||||
fi
|
||||
if test "${ns_appdir}" != ""; then \
|
||||
umask 022; mkdir -p ${ns_appdir}/Emacs.app; \
|
||||
(cd nextstep/build/Emacs.app; (tar -chf - . | \
|
||||
(cd ${ns_appdir}/Emacs.app; umask 022; tar -xvf - \
|
||||
&& cat > /dev/null))) || exit 1; \
|
||||
( cd site-lisp ; tar chf - . ) | \
|
||||
( cd ${datadir}/$(EMACSFULL)/site-lisp ; tar xf - ) \
|
||||
fi
|
||||
|
||||
## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
|
||||
## Needs to be the user running install, so configure can't set it.
|
||||
|
|
|
@ -3,7 +3,6 @@ of their use. Feel free to add more macros and more categories.
|
|||
|
||||
** Distinguishing OSes **
|
||||
|
||||
MAC_OS Compiling for the `mac' window-system.
|
||||
MAC_OS8 Compiling for Mac OS Classic (v8 or v9). No longer supported, all code using it can be removed.
|
||||
MAC_OSX Compiling for Mac OS X. Not bare Darwin.
|
||||
CYGWIN Compiling the Cygwin port.
|
||||
|
@ -23,7 +22,11 @@ USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type inst
|
|||
** Distinguishing GUIs **
|
||||
|
||||
HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars.
|
||||
MAC_OS Compiling for the `mac' window-system.
|
||||
HAVE_CARBON Compile support for the Carbon GUI. Requires MAC_OS?
|
||||
HAVE_NS Use the NeXT/OpenStep/Cocoa UI under Mac OS X or GNUstep.
|
||||
NS_IMPL_GNUSTEP Compile support for GNUSTEP implementation of NS GUI API.
|
||||
NS_IMPL_COCOA Compile support for Cocoa (Apple) implementation of NS GUI API.
|
||||
HAVE_X11 Compile support for the X11 GUI.
|
||||
HAVE_X_WINDOWS Compile support for X Window system
|
||||
X11 ?? Makefile.in suggests it's equivalent to HAVE_X11
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* CPP_DEFINES: Add NS port related defines.
|
||||
|
||||
2008-06-16 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* admin.el (set-version): Add doc/lispref/vol1.texi,vol2.texi,
|
||||
|
|
309
configure
vendored
309
configure
vendored
|
@ -734,6 +734,7 @@ X_TOOLKIT_TYPE
|
|||
machfile
|
||||
opsysfile
|
||||
carbon_appdir
|
||||
ns_appdir
|
||||
LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
ac_precious_vars='build_alias
|
||||
|
@ -1332,6 +1333,9 @@ Optional Features:
|
|||
--enable-carbon-app[=DIR]
|
||||
specify install directory for Emacs.app on Mac OS X
|
||||
[DIR=/Application]
|
||||
--enable-ns-app[=DIR] [DIR=/Applications]
|
||||
specify install directory for Emacs.app under NS
|
||||
--enable-cocoa-experimental-ctrl-g enable experimental improved ctrl-g recognition
|
||||
--enable-asserts compile code with asserts enabled
|
||||
--enable-maintainer-mode
|
||||
enable make rules and dependencies not useful (and
|
||||
|
@ -1367,6 +1371,7 @@ Optional Packages:
|
|||
--without-xaw3d don't use Xaw3d
|
||||
--without-xim don't use X11 XIM
|
||||
--with-carbon use Carbon GUI on Mac OS X. This is unsupported!
|
||||
--with-ns use nextstep (Cocoa or GNUstep) windowing system
|
||||
--without-gpm don't use -lgpm for mouse support on a GNU/Linux
|
||||
console
|
||||
--without-dbus don't compile with D-Bus support
|
||||
|
@ -2087,6 +2092,14 @@ else
|
|||
fi
|
||||
|
||||
|
||||
# Check whether --with-ns was given.
|
||||
if test "${with_ns+set}" = set; then
|
||||
withval=$with_ns;
|
||||
else
|
||||
with_ns=no
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check whether --with-gpm was given.
|
||||
if test "${with_gpm+set}" = set; then
|
||||
|
@ -2155,6 +2168,20 @@ if test "${enable_carbon_app+set}" = set; then
|
|||
fi
|
||||
|
||||
|
||||
# Check whether --enable-ns-app was given.
|
||||
if test "${enable_ns_app+set}" = set; then
|
||||
enableval=$enable_ns_app; ns_appdir_x=${enableval}
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --enable-cocoa-experimental-ctrl-g was given.
|
||||
if test "${enable_cocoa_experimental_ctrl_g+set}" = set; then
|
||||
enableval=$enable_cocoa_experimental_ctrl_g; EN_COCOA_EXPERIMENTAL_CTRL_G=yes
|
||||
else
|
||||
EN_COCOA_EXPERIMENTAL_CTRL_G=no
|
||||
fi
|
||||
|
||||
|
||||
# Check whether --enable-asserts was given.
|
||||
if test "${enable_asserts+set}" = set; then
|
||||
enableval=$enable_asserts; USE_XASSERTS=$enableval
|
||||
|
@ -2378,16 +2405,17 @@ machine='' opsys='' unported=no
|
|||
case "${canonical}" in
|
||||
|
||||
## FreeBSD ports
|
||||
*-*-freebsd* )
|
||||
*-*-*freebsd* )
|
||||
opsys=freebsd
|
||||
case "${canonical}" in
|
||||
alpha*-*-freebsd*) machine=alpha ;;
|
||||
arm*-*-freebsd*) machine=arm ;;
|
||||
ia64-*-freebsd*) machine=ia64 ;;
|
||||
sparc-*-freebsd*) machine=sparc ;;
|
||||
sparc64-*-freebsd*) machine=sparc ;;
|
||||
powerpc-*-freebsd*) machine=macppc ;;
|
||||
i[3456]86-*-freebsd*) machine=intel386 ;;
|
||||
amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
|
||||
amd64-*-freebsd*|x86_64-*-*freebsd*) machine=amdx86-64 ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
|
@ -2397,6 +2425,7 @@ case "${canonical}" in
|
|||
case "${canonical}" in
|
||||
alpha*-*-kfreebsd*) machine=alpha ;;
|
||||
ia64-*-kfreebsd*) machine=ia64 ;;
|
||||
sparc-*-kfreebsd*) machine=sparc ;;
|
||||
sparc64-*-kfreebsd*) machine=sparc ;;
|
||||
powerpc-*-kfreebsd*) machine=macppc ;;
|
||||
i[3456]86-*-kfreebsd*) machine=intel386 ;;
|
||||
|
@ -9308,6 +9337,179 @@ if test "${HAVE_CARBON}" = yes; then
|
|||
window_system=mac
|
||||
fi
|
||||
|
||||
HAVE_NS=no
|
||||
COCOA=no
|
||||
GNUSTEP=no
|
||||
tmp_CPPFLAGS="$CPPFLAGS"
|
||||
tmp_CFLAGS="$CFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS -x objective-c"
|
||||
CFLAGS="$CFLAGS -x objective-c"
|
||||
if test "${with_ns}" != no; then
|
||||
if test "${opsys}" = darwin; then
|
||||
COCOA=yes
|
||||
elif test -f /etc/GNUstep/GNUstep.conf; then
|
||||
GNUSTEP=yes
|
||||
GNUSTEP_SYSTEM_HEADERS="$(source /etc/GNUstep/GNUstep.conf; echo $GNUSTEP_SYSTEM_HEADERS)"
|
||||
GNUSTEP_SYSTEM_LIBRARIES="$(source /etc/GNUstep/GNUstep.conf; echo $GNUSTEP_SYSTEM_LIBRARIES)"
|
||||
CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES}"
|
||||
fi
|
||||
if test "${ac_cv_header_AppKit_AppKit_h+set}" = set; then
|
||||
{ echo "$as_me:$LINENO: checking for AppKit/AppKit.h" >&5
|
||||
echo $ECHO_N "checking for AppKit/AppKit.h... $ECHO_C" >&6; }
|
||||
if test "${ac_cv_header_AppKit_AppKit_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
{ echo "$as_me:$LINENO: result: $ac_cv_header_AppKit_AppKit_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_AppKit_AppKit_h" >&6; }
|
||||
else
|
||||
# Is the header compilable?
|
||||
{ echo "$as_me:$LINENO: checking AppKit/AppKit.h usability" >&5
|
||||
echo $ECHO_N "checking AppKit/AppKit.h usability... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <AppKit/AppKit.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && {
|
||||
test -z "$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext; then
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6; }
|
||||
|
||||
# Is the header present?
|
||||
{ echo "$as_me:$LINENO: checking AppKit/AppKit.h presence" >&5
|
||||
echo $ECHO_N "checking AppKit/AppKit.h presence... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <AppKit/AppKit.h>
|
||||
_ACEOF
|
||||
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null && {
|
||||
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
}; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6; }
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: AppKit/AppKit.h: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: AppKit/AppKit.h: in the future, the compiler will take precedence" >&2;}
|
||||
|
||||
;;
|
||||
esac
|
||||
{ echo "$as_me:$LINENO: checking for AppKit/AppKit.h" >&5
|
||||
echo $ECHO_N "checking for AppKit/AppKit.h... $ECHO_C" >&6; }
|
||||
if test "${ac_cv_header_AppKit_AppKit_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_cv_header_AppKit_AppKit_h=$ac_header_preproc
|
||||
fi
|
||||
{ echo "$as_me:$LINENO: result: $ac_cv_header_AppKit_AppKit_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_AppKit_AppKit_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_AppKit_AppKit_h = yes; then
|
||||
HAVE_NS=yes
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if test "${window_system}" = x11 && test "${HAVE_NS}" = yes; then
|
||||
if test "${with_ns+set}" != set \
|
||||
&& test "${ns_appdir_x+set}" != set; then
|
||||
HAVE_NS=no
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${window_system}" = mac && test "${HAVE_NS}" = yes; then
|
||||
if test "${with_ns+set}" != set \
|
||||
&& test "${ns_appdir_x+set}" != set; then
|
||||
HAVE_NS=no
|
||||
else
|
||||
HAVE_CARBON=no
|
||||
fi
|
||||
fi
|
||||
if test "${HAVE_NS}" = yes; then
|
||||
window_system=nextstep
|
||||
with_xft=no
|
||||
with_freetype=no
|
||||
fi
|
||||
CFLAGS="$tmp_CFLAGS"
|
||||
CPPFLAGS="$tmp_CPPFLAGS"
|
||||
|
||||
case "${window_system}" in
|
||||
x11 )
|
||||
HAVE_X_WINDOWS=yes
|
||||
|
@ -9321,7 +9523,7 @@ case "${window_system}" in
|
|||
* ) USE_X_TOOLKIT=maybe ;;
|
||||
esac
|
||||
;;
|
||||
mac | none )
|
||||
nextstep | mac | none )
|
||||
HAVE_X_WINDOWS=no
|
||||
HAVE_X11=no
|
||||
USE_X_TOOLKIT=none
|
||||
|
@ -9396,9 +9598,6 @@ case ${HAVE_X11} in
|
|||
yes ) HAVE_MENUS=yes ;;
|
||||
esac
|
||||
|
||||
### Compute the unexec source name from the object name.
|
||||
UNEXEC_SRC="`echo ${unexec} | sed 's/\.o/.c/'`"
|
||||
|
||||
# Do the opsystem or machine files prohibit the use of the GNU malloc?
|
||||
# Assume not, until told otherwise.
|
||||
GNU_MALLOC=yes
|
||||
|
@ -12313,6 +12512,12 @@ _ACEOF
|
|||
elif test "${HAVE_CARBON}" = "yes"; then
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define USE_TOOLKIT_SCROLL_BARS 1
|
||||
_ACEOF
|
||||
|
||||
USE_TOOLKIT_SCROLL_BARS=yes
|
||||
elif test "${HAVE_NS}" = "yes"; then
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define USE_TOOLKIT_SCROLL_BARS 1
|
||||
_ACEOF
|
||||
|
||||
USE_TOOLKIT_SCROLL_BARS=yes
|
||||
|
@ -14943,6 +15148,46 @@ done
|
|||
# We also have mouse menus.
|
||||
HAVE_MENUS=yes
|
||||
fi
|
||||
### Use NeXTstep API to implement GUI.
|
||||
if test "${HAVE_NS}" = "yes"; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_NS 1
|
||||
_ACEOF
|
||||
|
||||
## Specify the install directory
|
||||
ns_appdir=
|
||||
if test "${ns_appdir_x}" != ""; then
|
||||
case ${ns_appdir_x} in
|
||||
y | ye | yes) ns_appdir=/Applications ;;
|
||||
* ) ns_appdir=${ns_appdir_x} ;;
|
||||
esac
|
||||
fi
|
||||
if test "${COCOA}" = "yes"; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define NS_IMPL_COCOA 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
if test "${EN_COCOA_EXPERIMENTAL_CTRL_G}" = "yes"; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define COCOA_EXPERIMENTAL_CTRL_G 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
if test "${GNUSTEP}" = "yes"; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define NS_IMPL_GNUSTEP 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
# We also have mouse menus.
|
||||
HAVE_MENUS=yes
|
||||
fi
|
||||
|
||||
|
||||
### Use session management (-lSM -lICE) if available
|
||||
HAVE_X_SM=no
|
||||
|
@ -16688,7 +16933,6 @@ cat >>conftest.$ac_ext <<_ACEOF
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
|
@ -16837,15 +17081,12 @@ main ()
|
|||
isn't worth using anyway. */
|
||||
alarm (60);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
t = (time_t_max << 1) + 1;
|
||||
if (t <= time_t_max)
|
||||
break;
|
||||
time_t_max = t;
|
||||
}
|
||||
time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max;
|
||||
|
||||
for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
|
||||
continue;
|
||||
time_t_max--;
|
||||
if ((time_t) -1 < 0)
|
||||
for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2)
|
||||
continue;
|
||||
delta = time_t_max / 997; /* a suitable prime number */
|
||||
for (i = 0; i < N_STRINGS; i++)
|
||||
{
|
||||
|
@ -16860,12 +17101,10 @@ main ()
|
|||
&& mktime_test ((time_t) (60 * 60 * 24))))
|
||||
return 1;
|
||||
|
||||
for (j = 1; ; j <<= 1)
|
||||
for (j = 1; 0 < j; j *= 2)
|
||||
if (! bigtime_test (j))
|
||||
return 1;
|
||||
else if (INT_MAX / 2 < j)
|
||||
break;
|
||||
if (! bigtime_test (INT_MAX))
|
||||
if (! bigtime_test (j - 1))
|
||||
return 1;
|
||||
}
|
||||
return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ());
|
||||
|
@ -18774,13 +19013,11 @@ _ACEOF
|
|||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h> /* for off_t */
|
||||
#include <stdio.h>
|
||||
#include <stdio.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int (*fp) (FILE *, off_t, int) = fseeko;
|
||||
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
|
||||
return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
@ -18820,13 +19057,11 @@ cat confdefs.h >>conftest.$ac_ext
|
|||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#define _LARGEFILE_SOURCE 1
|
||||
#include <sys/types.h> /* for off_t */
|
||||
#include <stdio.h>
|
||||
#include <stdio.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int (*fp) (FILE *, off_t, int) = fseeko;
|
||||
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
|
||||
return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
@ -23961,6 +24196,7 @@ fi
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
|
@ -24106,12 +24342,11 @@ echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
|
|||
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
|
||||
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
|
||||
|
||||
if test "${USE_FONT_BACKEND}" = "yes"; then
|
||||
echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
|
||||
echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
|
||||
echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
|
||||
echo " Does Emacs use -lxft? ${HAVE_XFT}"
|
||||
fi
|
||||
echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
|
||||
echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
|
||||
echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
|
||||
echo " Does Emacs use -lxft? ${HAVE_XFT}"
|
||||
|
||||
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
|
||||
echo
|
||||
|
||||
|
@ -24985,10 +25220,11 @@ X_TOOLKIT_TYPE!$X_TOOLKIT_TYPE$ac_delim
|
|||
machfile!$machfile$ac_delim
|
||||
opsysfile!$opsysfile$ac_delim
|
||||
carbon_appdir!$carbon_appdir$ac_delim
|
||||
ns_appdir!$ns_appdir$ac_delim
|
||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 22; then
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 23; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
|
@ -25449,9 +25685,6 @@ if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
|
|||
echo source $srcdir/src/.gdbinit > src/.gdbinit
|
||||
fi
|
||||
|
||||
# This is how we know whether to re-run configure in certain cases.
|
||||
touch src/config.stamp
|
||||
|
||||
;;
|
||||
|
||||
esac
|
||||
|
|
131
configure.in
131
configure.in
|
@ -21,7 +21,7 @@ dnl
|
|||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
AC_PREREQ(2.61)dnl
|
||||
AC_PREREQ(2.61)
|
||||
AC_INIT(emacs, 23.0.60)
|
||||
AC_CONFIG_HEADER(src/config.h:src/config.in)
|
||||
AC_CONFIG_SRCDIR(src/lisp.h)
|
||||
|
@ -142,6 +142,7 @@ OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
|
|||
OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
|
||||
OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
|
||||
OPTION_DEFAULT_OFF([carbon],[use Carbon GUI on Mac OS X. This is unsupported!])
|
||||
OPTION_DEFAULT_OFF([ns],[use nextstep (Cocoa or GNUstep) windowing system])
|
||||
|
||||
OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
|
||||
OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
|
||||
|
@ -175,6 +176,16 @@ AC_ARG_ENABLE(carbon-app,
|
|||
[DIR=/Application]])],
|
||||
[ carbon_appdir_x=${enableval}])
|
||||
|
||||
AC_ARG_ENABLE(ns-app,
|
||||
[[ --enable-ns-app[=DIR] [DIR=/Applications]
|
||||
specify install directory for Emacs.app under NS]],
|
||||
[ ns_appdir_x=${enableval}])
|
||||
|
||||
AC_ARG_ENABLE(cocoa-experimental-ctrl-g,
|
||||
[ --enable-cocoa-experimental-ctrl-g enable experimental improved ctrl-g recognition],
|
||||
EN_COCOA_EXPERIMENTAL_CTRL_G=yes,
|
||||
EN_COCOA_EXPERIMENTAL_CTRL_G=no)
|
||||
|
||||
AC_ARG_ENABLE(asserts,
|
||||
[AS_HELP_STRING([--enable-asserts], [compile code with asserts enabled])],
|
||||
USE_XASSERTS=$enableval,
|
||||
|
@ -283,16 +294,17 @@ machine='' opsys='' unported=no
|
|||
case "${canonical}" in
|
||||
|
||||
## FreeBSD ports
|
||||
*-*-freebsd* )
|
||||
*-*-*freebsd* )
|
||||
opsys=freebsd
|
||||
case "${canonical}" in
|
||||
alpha*-*-freebsd*) machine=alpha ;;
|
||||
arm*-*-freebsd*) machine=arm ;;
|
||||
ia64-*-freebsd*) machine=ia64 ;;
|
||||
sparc-*-freebsd*) machine=sparc ;;
|
||||
sparc64-*-freebsd*) machine=sparc ;;
|
||||
powerpc-*-freebsd*) machine=macppc ;;
|
||||
i[3456]86-*-freebsd*) machine=intel386 ;;
|
||||
amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
|
||||
amd64-*-freebsd*|x86_64-*-*freebsd*) machine=amdx86-64 ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
|
@ -302,6 +314,7 @@ case "${canonical}" in
|
|||
case "${canonical}" in
|
||||
alpha*-*-kfreebsd*) machine=alpha ;;
|
||||
ia64-*-kfreebsd*) machine=ia64 ;;
|
||||
sparc-*-kfreebsd*) machine=sparc ;;
|
||||
sparc64-*-kfreebsd*) machine=sparc ;;
|
||||
powerpc-*-kfreebsd*) machine=macppc ;;
|
||||
i[3456]86-*-kfreebsd*) machine=intel386 ;;
|
||||
|
@ -1221,6 +1234,50 @@ if test "${HAVE_CARBON}" = yes; then
|
|||
window_system=mac
|
||||
fi
|
||||
|
||||
HAVE_NS=no
|
||||
COCOA=no
|
||||
GNUSTEP=no
|
||||
tmp_CPPFLAGS="$CPPFLAGS"
|
||||
tmp_CFLAGS="$CFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS -x objective-c"
|
||||
CFLAGS="$CFLAGS -x objective-c"
|
||||
if test "${with_ns}" != no; then
|
||||
if test "${opsys}" = darwin; then
|
||||
COCOA=yes
|
||||
elif test -f /etc/GNUstep/GNUstep.conf; then
|
||||
GNUSTEP=yes
|
||||
GNUSTEP_SYSTEM_HEADERS="$(source /etc/GNUstep/GNUstep.conf; echo $GNUSTEP_SYSTEM_HEADERS)"
|
||||
GNUSTEP_SYSTEM_LIBRARIES="$(source /etc/GNUstep/GNUstep.conf; echo $GNUSTEP_SYSTEM_LIBRARIES)"
|
||||
CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
|
||||
LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES}"
|
||||
fi
|
||||
AC_CHECK_HEADER(AppKit/AppKit.h, HAVE_NS=yes)
|
||||
fi
|
||||
if test "${window_system}" = x11 && test "${HAVE_NS}" = yes; then
|
||||
if test "${with_ns+set}" != set \
|
||||
&& test "${ns_appdir_x+set}" != set; then
|
||||
HAVE_NS=no
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${window_system}" = mac && test "${HAVE_NS}" = yes; then
|
||||
if test "${with_ns+set}" != set \
|
||||
&& test "${ns_appdir_x+set}" != set; then
|
||||
HAVE_NS=no
|
||||
else
|
||||
HAVE_CARBON=no
|
||||
fi
|
||||
fi
|
||||
if test "${HAVE_NS}" = yes; then
|
||||
window_system=nextstep
|
||||
with_xft=no
|
||||
with_freetype=no
|
||||
fi
|
||||
CFLAGS="$tmp_CFLAGS"
|
||||
CPPFLAGS="$tmp_CPPFLAGS"
|
||||
|
||||
case "${window_system}" in
|
||||
x11 )
|
||||
HAVE_X_WINDOWS=yes
|
||||
|
@ -1238,7 +1295,7 @@ dnl use the toolkit if we have gtk, or X11R5 or newer.
|
|||
* ) USE_X_TOOLKIT=maybe ;;
|
||||
esac
|
||||
;;
|
||||
mac | none )
|
||||
nextstep | mac | none )
|
||||
HAVE_X_WINDOWS=no
|
||||
HAVE_X11=no
|
||||
USE_X_TOOLKIT=none
|
||||
|
@ -1710,6 +1767,9 @@ if test "${with_toolkit_scroll_bars}" != "no"; then
|
|||
elif test "${HAVE_CARBON}" = "yes"; then
|
||||
AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
|
||||
USE_TOOLKIT_SCROLL_BARS=yes
|
||||
elif test "${HAVE_NS}" = "yes"; then
|
||||
AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
|
||||
USE_TOOLKIT_SCROLL_BARS=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -2019,6 +2079,30 @@ if test "${HAVE_CARBON}" = "yes"; then
|
|||
# We also have mouse menus.
|
||||
HAVE_MENUS=yes
|
||||
fi
|
||||
### Use NeXTstep API to implement GUI.
|
||||
if test "${HAVE_NS}" = "yes"; then
|
||||
AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
|
||||
## Specify the install directory
|
||||
ns_appdir=
|
||||
if test "${ns_appdir_x}" != ""; then
|
||||
case ${ns_appdir_x} in
|
||||
y | ye | yes) ns_appdir=/Applications ;;
|
||||
* ) ns_appdir=${ns_appdir_x} ;;
|
||||
esac
|
||||
fi
|
||||
if test "${COCOA}" = "yes"; then
|
||||
AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
|
||||
fi
|
||||
if test "${EN_COCOA_EXPERIMENTAL_CTRL_G}" = "yes"; then
|
||||
AC_DEFINE(COCOA_EXPERIMENTAL_CTRL_G, 1, [Define to 1 if you are trying experimental enhanced Ctrl-g support using NS windowing under MacOS X.])
|
||||
fi
|
||||
if test "${GNUSTEP}" = "yes"; then
|
||||
AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
|
||||
fi
|
||||
# We also have mouse menus.
|
||||
HAVE_MENUS=yes
|
||||
fi
|
||||
|
||||
|
||||
### Use session management (-lSM -lICE) if available
|
||||
HAVE_X_SM=no
|
||||
|
@ -2414,6 +2498,7 @@ AC_SUBST(machfile)
|
|||
AC_SUBST(opsysfile)
|
||||
AC_SUBST(GETLOADAVG_LIBS)
|
||||
AC_SUBST(carbon_appdir)
|
||||
AC_SUBST(ns_appdir)
|
||||
|
||||
AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
|
||||
[Define to the canonical Emacs configuration name.])
|
||||
|
@ -2503,8 +2588,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
])dnl
|
||||
|
||||
AH_BOTTOM([
|
||||
/* If we're using any sort of window system, define some consequences. */
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
/* If we're using X11/Carbon/GNUstep, define some consequences. */
|
||||
#if defined HAVE_X_WINDOWS || defined(HAVE_CARBON) || defined(HAVE_NS)
|
||||
#define HAVE_WINDOW_SYSTEM
|
||||
#define MULTI_KBOARD
|
||||
#define HAVE_MOUSE
|
||||
|
@ -2516,13 +2601,15 @@ AH_BOTTOM([
|
|||
#define MULTI_KBOARD
|
||||
#endif
|
||||
|
||||
/* If we're using the Carbon API on Mac OS X, define a few more
|
||||
variables as well. */
|
||||
#ifdef HAVE_CARBON
|
||||
#define HAVE_WINDOW_SYSTEM
|
||||
#define HAVE_MOUSE
|
||||
/* Sadly for now, GNUstep dump does not work. */
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
#define CANNOT_DUMP
|
||||
#endif
|
||||
|
||||
/* PENDING: These are used for the Carbon port only. */
|
||||
#undef MAC_OS
|
||||
#undef MAC_OSX
|
||||
|
||||
/* Define USER_FULL_NAME to return a string
|
||||
that is the user's full name.
|
||||
It can assume that the variable `pw'
|
||||
|
@ -2575,6 +2662,28 @@ AH_BOTTOM([
|
|||
#include config_opsysfile
|
||||
#include config_machfile
|
||||
|
||||
/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
|
||||
(There is probably a better place to do this, but right now the Cocoa
|
||||
side does this in s/darwin.h, following the Carbon port, and we cannot
|
||||
parallel this exactly since GNUstep is multi-OS. */
|
||||
#ifdef HAVE_NS
|
||||
# ifdef C_SWITCH_SYSTEM
|
||||
# undef C_SWITCH_SYSTEM
|
||||
# endif
|
||||
# ifdef NS_IMPL_GNUSTEP
|
||||
/* See also .m.o rule in Makefile.in */
|
||||
# define C_SWITCH_X_SYSTEM -MMD -MP -D_REENTRANT -fPIC -fno-strict-aliasing
|
||||
# define LD_SWITCH_SITE -lgnustep-gui -lgnustep-base -lobjc $(CONFIG_SYSTEM_LIBS) -lpthread
|
||||
# define GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE
|
||||
# define OTHER_FILES ns-app
|
||||
# else /* COCOA */
|
||||
# define C_SWITCH_X_SYSTEM
|
||||
# define GNU_OBJC_CFLAGS
|
||||
# endif /* COCOA */
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
|
||||
|
||||
/* If no remapping takes place, static variables cannot be dumped as
|
||||
pure, so don't worry about the `static' keyword. */
|
||||
#ifdef NO_REMAP
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* ns-emacs.texi: New file, documents features of Emacs port under
|
||||
NeXTstep windowing.
|
||||
|
||||
2008-07-15 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* entering.texi (Entering Emacs): Update prev node.
|
||||
|
|
1019
doc/emacs/ns-emacs.texi
Normal file
1019
doc/emacs/ns-emacs.texi
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,8 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* Emacs.clr: New file, add support for X color names to NS display
|
||||
implementations.
|
||||
|
||||
2008-07-12 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* HELLO: Use more correct IPA characters for English pronunciation.
|
||||
|
|
758
etc/Emacs.clr
Normal file
758
etc/Emacs.clr
Normal file
|
@ -0,0 +1,758 @@
|
|||
757
|
||||
0 1.000 0.980 0.980 1.0 snow
|
||||
0 0.973 0.973 1.000 1.0 ghost white
|
||||
0 0.973 0.973 1.000 1.0 GhostWhite
|
||||
0 0.961 0.961 0.961 1.0 white smoke
|
||||
0 0.961 0.961 0.961 1.0 WhiteSmoke
|
||||
0 0.863 0.863 0.863 1.0 gainsboro
|
||||
0 1.000 0.980 0.941 1.0 floral white
|
||||
0 1.000 0.980 0.941 1.0 FloralWhite
|
||||
0 0.992 0.961 0.902 1.0 old lace
|
||||
0 0.992 0.961 0.902 1.0 OldLace
|
||||
0 0.980 0.941 0.902 1.0 linen
|
||||
0 0.980 0.922 0.843 1.0 antique white
|
||||
0 0.980 0.922 0.843 1.0 AntiqueWhite
|
||||
0 1.000 0.937 0.835 1.0 papaya whip
|
||||
0 1.000 0.937 0.835 1.0 PapayaWhip
|
||||
0 1.000 0.922 0.804 1.0 blanched almond
|
||||
0 1.000 0.922 0.804 1.0 BlanchedAlmond
|
||||
0 1.000 0.894 0.769 1.0 bisque
|
||||
0 1.000 0.855 0.725 1.0 peach puff
|
||||
0 1.000 0.855 0.725 1.0 PeachPuff
|
||||
0 1.000 0.871 0.678 1.0 navajo white
|
||||
0 1.000 0.871 0.678 1.0 NavajoWhite
|
||||
0 1.000 0.894 0.710 1.0 moccasin
|
||||
0 1.000 0.973 0.863 1.0 cornsilk
|
||||
0 1.000 1.000 0.941 1.0 ivory
|
||||
0 1.000 0.980 0.804 1.0 lemon chiffon
|
||||
0 1.000 0.980 0.804 1.0 LemonChiffon
|
||||
0 1.000 0.961 0.933 1.0 seashell
|
||||
0 0.941 1.000 0.941 1.0 honeydew
|
||||
0 0.961 1.000 0.980 1.0 mint cream
|
||||
0 0.961 1.000 0.980 1.0 MintCream
|
||||
0 0.941 1.000 1.000 1.0 azure
|
||||
0 0.941 0.973 1.000 1.0 alice blue
|
||||
0 0.941 0.973 1.000 1.0 AliceBlue
|
||||
0 0.902 0.902 0.980 1.0 lavender
|
||||
0 1.000 0.941 0.961 1.0 lavender blush
|
||||
0 1.000 0.941 0.961 1.0 LavenderBlush
|
||||
0 1.000 0.894 0.882 1.0 misty rose
|
||||
0 1.000 0.894 0.882 1.0 MistyRose
|
||||
0 1.000 1.000 1.000 1.0 white
|
||||
0 0.000 0.000 0.000 1.0 black
|
||||
0 0.184 0.310 0.310 1.0 dark slate gray
|
||||
0 0.184 0.310 0.310 1.0 DarkSlateGray
|
||||
0 0.184 0.310 0.310 1.0 dark slate grey
|
||||
0 0.184 0.310 0.310 1.0 DarkSlateGrey
|
||||
0 0.412 0.412 0.412 1.0 dim gray
|
||||
0 0.412 0.412 0.412 1.0 DimGray
|
||||
0 0.412 0.412 0.412 1.0 dim grey
|
||||
0 0.412 0.412 0.412 1.0 DimGrey
|
||||
0 0.439 0.502 0.565 1.0 slate gray
|
||||
0 0.439 0.502 0.565 1.0 SlateGray
|
||||
0 0.439 0.502 0.565 1.0 slate grey
|
||||
0 0.439 0.502 0.565 1.0 SlateGrey
|
||||
0 0.467 0.533 0.600 1.0 light slate gray
|
||||
0 0.467 0.533 0.600 1.0 LightSlateGray
|
||||
0 0.467 0.533 0.600 1.0 light slate grey
|
||||
0 0.467 0.533 0.600 1.0 LightSlateGrey
|
||||
0 0.745 0.745 0.745 1.0 gray
|
||||
0 0.745 0.745 0.745 1.0 grey
|
||||
0 0.827 0.827 0.827 1.0 light grey
|
||||
0 0.827 0.827 0.827 1.0 LightGrey
|
||||
0 0.827 0.827 0.827 1.0 light gray
|
||||
0 0.827 0.827 0.827 1.0 LightGray
|
||||
0 0.098 0.098 0.439 1.0 midnight blue
|
||||
0 0.098 0.098 0.439 1.0 MidnightBlue
|
||||
0 0.000 0.000 0.502 1.0 navy
|
||||
0 0.000 0.000 0.502 1.0 navy blue
|
||||
0 0.000 0.000 0.502 1.0 NavyBlue
|
||||
0 0.392 0.584 0.929 1.0 cornflower blue
|
||||
0 0.392 0.584 0.929 1.0 CornflowerBlue
|
||||
0 0.282 0.239 0.545 1.0 dark slate blue
|
||||
0 0.282 0.239 0.545 1.0 DarkSlateBlue
|
||||
0 0.416 0.353 0.804 1.0 slate blue
|
||||
0 0.416 0.353 0.804 1.0 SlateBlue
|
||||
0 0.482 0.408 0.933 1.0 medium slate blue
|
||||
0 0.482 0.408 0.933 1.0 MediumSlateBlue
|
||||
0 0.518 0.439 1.000 1.0 light slate blue
|
||||
0 0.518 0.439 1.000 1.0 LightSlateBlue
|
||||
0 0.000 0.000 0.804 1.0 medium blue
|
||||
0 0.000 0.000 0.804 1.0 MediumBlue
|
||||
0 0.255 0.412 0.882 1.0 royal blue
|
||||
0 0.255 0.412 0.882 1.0 RoyalBlue
|
||||
0 0.000 0.000 1.000 1.0 blue
|
||||
0 0.118 0.565 1.000 1.0 dodger blue
|
||||
0 0.118 0.565 1.000 1.0 DodgerBlue
|
||||
0 0.000 0.749 1.000 1.0 deep sky blue
|
||||
0 0.000 0.749 1.000 1.0 DeepSkyBlue
|
||||
0 0.529 0.808 0.922 1.0 sky blue
|
||||
0 0.529 0.808 0.922 1.0 SkyBlue
|
||||
0 0.529 0.808 0.980 1.0 light sky blue
|
||||
0 0.529 0.808 0.980 1.0 LightSkyBlue
|
||||
0 0.275 0.510 0.706 1.0 steel blue
|
||||
0 0.275 0.510 0.706 1.0 SteelBlue
|
||||
0 0.690 0.769 0.871 1.0 light steel blue
|
||||
0 0.690 0.769 0.871 1.0 LightSteelBlue
|
||||
0 0.678 0.847 0.902 1.0 light blue
|
||||
0 0.678 0.847 0.902 1.0 LightBlue
|
||||
0 0.690 0.878 0.902 1.0 powder blue
|
||||
0 0.690 0.878 0.902 1.0 PowderBlue
|
||||
0 0.686 0.933 0.933 1.0 pale turquoise
|
||||
0 0.686 0.933 0.933 1.0 PaleTurquoise
|
||||
0 0.000 0.808 0.820 1.0 dark turquoise
|
||||
0 0.000 0.808 0.820 1.0 DarkTurquoise
|
||||
0 0.282 0.820 0.800 1.0 medium turquoise
|
||||
0 0.282 0.820 0.800 1.0 MediumTurquoise
|
||||
0 0.251 0.878 0.816 1.0 turquoise
|
||||
0 0.000 1.000 1.000 1.0 cyan
|
||||
0 0.878 1.000 1.000 1.0 light cyan
|
||||
0 0.878 1.000 1.000 1.0 LightCyan
|
||||
0 0.373 0.620 0.627 1.0 cadet blue
|
||||
0 0.373 0.620 0.627 1.0 CadetBlue
|
||||
0 0.400 0.804 0.667 1.0 medium aquamarine
|
||||
0 0.400 0.804 0.667 1.0 MediumAquamarine
|
||||
0 0.498 1.000 0.831 1.0 aquamarine
|
||||
0 0.000 0.392 0.000 1.0 dark green
|
||||
0 0.000 0.392 0.000 1.0 DarkGreen
|
||||
0 0.333 0.420 0.184 1.0 dark olive green
|
||||
0 0.333 0.420 0.184 1.0 DarkOliveGreen
|
||||
0 0.561 0.737 0.561 1.0 dark sea green
|
||||
0 0.561 0.737 0.561 1.0 DarkSeaGreen
|
||||
0 0.180 0.545 0.341 1.0 sea green
|
||||
0 0.180 0.545 0.341 1.0 SeaGreen
|
||||
0 0.235 0.702 0.443 1.0 medium sea green
|
||||
0 0.235 0.702 0.443 1.0 MediumSeaGreen
|
||||
0 0.125 0.698 0.667 1.0 light sea green
|
||||
0 0.125 0.698 0.667 1.0 LightSeaGreen
|
||||
0 0.596 0.984 0.596 1.0 pale green
|
||||
0 0.596 0.984 0.596 1.0 PaleGreen
|
||||
0 0.000 1.000 0.498 1.0 spring green
|
||||
0 0.000 1.000 0.498 1.0 SpringGreen
|
||||
0 0.486 0.988 0.000 1.0 lawn green
|
||||
0 0.486 0.988 0.000 1.0 LawnGreen
|
||||
0 0.000 1.000 0.000 1.0 green
|
||||
0 0.498 1.000 0.000 1.0 chartreuse
|
||||
0 0.000 0.980 0.604 1.0 medium spring green
|
||||
0 0.000 0.980 0.604 1.0 MediumSpringGreen
|
||||
0 0.678 1.000 0.184 1.0 green yellow
|
||||
0 0.678 1.000 0.184 1.0 GreenYellow
|
||||
0 0.196 0.804 0.196 1.0 lime green
|
||||
0 0.196 0.804 0.196 1.0 LimeGreen
|
||||
0 0.604 0.804 0.196 1.0 yellow green
|
||||
0 0.604 0.804 0.196 1.0 YellowGreen
|
||||
0 0.133 0.545 0.133 1.0 forest green
|
||||
0 0.133 0.545 0.133 1.0 ForestGreen
|
||||
0 0.420 0.557 0.137 1.0 olive drab
|
||||
0 0.420 0.557 0.137 1.0 OliveDrab
|
||||
0 0.741 0.718 0.420 1.0 dark khaki
|
||||
0 0.741 0.718 0.420 1.0 DarkKhaki
|
||||
0 0.941 0.902 0.549 1.0 khaki
|
||||
0 0.933 0.910 0.667 1.0 pale goldenrod
|
||||
0 0.933 0.910 0.667 1.0 PaleGoldenrod
|
||||
0 0.980 0.980 0.824 1.0 light goldenrod yellow
|
||||
0 0.980 0.980 0.824 1.0 LightGoldenrodYellow
|
||||
0 1.000 1.000 0.878 1.0 light yellow
|
||||
0 1.000 1.000 0.878 1.0 LightYellow
|
||||
0 1.000 1.000 0.000 1.0 yellow
|
||||
0 1.000 0.843 0.000 1.0 gold
|
||||
0 0.933 0.867 0.510 1.0 light goldenrod
|
||||
0 0.933 0.867 0.510 1.0 LightGoldenrod
|
||||
0 0.855 0.647 0.125 1.0 goldenrod
|
||||
0 0.722 0.525 0.043 1.0 dark goldenrod
|
||||
0 0.722 0.525 0.043 1.0 DarkGoldenrod
|
||||
0 0.737 0.561 0.561 1.0 rosy brown
|
||||
0 0.737 0.561 0.561 1.0 RosyBrown
|
||||
0 0.804 0.361 0.361 1.0 indian red
|
||||
0 0.804 0.361 0.361 1.0 IndianRed
|
||||
0 0.545 0.271 0.075 1.0 saddle brown
|
||||
0 0.545 0.271 0.075 1.0 SaddleBrown
|
||||
0 0.627 0.322 0.176 1.0 sienna
|
||||
0 0.804 0.522 0.247 1.0 peru
|
||||
0 0.871 0.722 0.529 1.0 burlywood
|
||||
0 0.961 0.961 0.863 1.0 beige
|
||||
0 0.961 0.871 0.702 1.0 wheat
|
||||
0 0.957 0.643 0.376 1.0 sandy brown
|
||||
0 0.957 0.643 0.376 1.0 SandyBrown
|
||||
0 0.824 0.706 0.549 1.0 tan
|
||||
0 0.824 0.412 0.118 1.0 chocolate
|
||||
0 0.698 0.133 0.133 1.0 firebrick
|
||||
0 0.647 0.165 0.165 1.0 brown
|
||||
0 0.914 0.588 0.478 1.0 dark salmon
|
||||
0 0.914 0.588 0.478 1.0 DarkSalmon
|
||||
0 0.980 0.502 0.447 1.0 salmon
|
||||
0 1.000 0.627 0.478 1.0 light salmon
|
||||
0 1.000 0.627 0.478 1.0 LightSalmon
|
||||
0 1.000 0.647 0.000 1.0 orange
|
||||
0 1.000 0.549 0.000 1.0 dark orange
|
||||
0 1.000 0.549 0.000 1.0 DarkOrange
|
||||
0 1.000 0.498 0.314 1.0 coral
|
||||
0 0.941 0.502 0.502 1.0 light coral
|
||||
0 0.941 0.502 0.502 1.0 LightCoral
|
||||
0 1.000 0.388 0.278 1.0 tomato
|
||||
0 1.000 0.271 0.000 1.0 orange red
|
||||
0 1.000 0.271 0.000 1.0 OrangeRed
|
||||
0 1.000 0.000 0.000 1.0 red
|
||||
0 1.000 0.412 0.706 1.0 hot pink
|
||||
0 1.000 0.412 0.706 1.0 HotPink
|
||||
0 1.000 0.078 0.576 1.0 deep pink
|
||||
0 1.000 0.078 0.576 1.0 DeepPink
|
||||
0 1.000 0.753 0.796 1.0 pink
|
||||
0 1.000 0.714 0.757 1.0 light pink
|
||||
0 1.000 0.714 0.757 1.0 LightPink
|
||||
0 0.859 0.439 0.576 1.0 pale violet red
|
||||
0 0.859 0.439 0.576 1.0 PaleVioletRed
|
||||
0 0.690 0.188 0.376 1.0 maroon
|
||||
0 0.780 0.082 0.522 1.0 medium violet red
|
||||
0 0.780 0.082 0.522 1.0 MediumVioletRed
|
||||
0 0.816 0.125 0.565 1.0 violet red
|
||||
0 0.816 0.125 0.565 1.0 VioletRed
|
||||
0 1.000 0.000 1.000 1.0 magenta
|
||||
0 0.933 0.510 0.933 1.0 violet
|
||||
0 0.867 0.627 0.867 1.0 plum
|
||||
0 0.855 0.439 0.839 1.0 orchid
|
||||
0 0.729 0.333 0.827 1.0 medium orchid
|
||||
0 0.729 0.333 0.827 1.0 MediumOrchid
|
||||
0 0.600 0.196 0.800 1.0 dark orchid
|
||||
0 0.600 0.196 0.800 1.0 DarkOrchid
|
||||
0 0.580 0.000 0.827 1.0 dark violet
|
||||
0 0.580 0.000 0.827 1.0 DarkViolet
|
||||
0 0.541 0.169 0.886 1.0 blue violet
|
||||
0 0.541 0.169 0.886 1.0 BlueViolet
|
||||
0 0.627 0.125 0.941 1.0 purple
|
||||
0 0.576 0.439 0.859 1.0 medium purple
|
||||
0 0.576 0.439 0.859 1.0 MediumPurple
|
||||
0 0.847 0.749 0.847 1.0 thistle
|
||||
0 1.000 0.980 0.980 1.0 snow1
|
||||
0 0.933 0.914 0.914 1.0 snow2
|
||||
0 0.804 0.788 0.788 1.0 snow3
|
||||
0 0.545 0.537 0.537 1.0 snow4
|
||||
0 1.000 0.961 0.933 1.0 seashell1
|
||||
0 0.933 0.898 0.871 1.0 seashell2
|
||||
0 0.804 0.773 0.749 1.0 seashell3
|
||||
0 0.545 0.525 0.510 1.0 seashell4
|
||||
0 1.000 0.937 0.859 1.0 AntiqueWhite1
|
||||
0 0.933 0.875 0.800 1.0 AntiqueWhite2
|
||||
0 0.804 0.753 0.690 1.0 AntiqueWhite3
|
||||
0 0.545 0.514 0.471 1.0 AntiqueWhite4
|
||||
0 1.000 0.894 0.769 1.0 bisque1
|
||||
0 0.933 0.835 0.718 1.0 bisque2
|
||||
0 0.804 0.718 0.620 1.0 bisque3
|
||||
0 0.545 0.490 0.420 1.0 bisque4
|
||||
0 1.000 0.855 0.725 1.0 PeachPuff1
|
||||
0 0.933 0.796 0.678 1.0 PeachPuff2
|
||||
0 0.804 0.686 0.584 1.0 PeachPuff3
|
||||
0 0.545 0.467 0.396 1.0 PeachPuff4
|
||||
0 1.000 0.871 0.678 1.0 NavajoWhite1
|
||||
0 0.933 0.812 0.631 1.0 NavajoWhite2
|
||||
0 0.804 0.702 0.545 1.0 NavajoWhite3
|
||||
0 0.545 0.475 0.369 1.0 NavajoWhite4
|
||||
0 1.000 0.980 0.804 1.0 LemonChiffon1
|
||||
0 0.933 0.914 0.749 1.0 LemonChiffon2
|
||||
0 0.804 0.788 0.647 1.0 LemonChiffon3
|
||||
0 0.545 0.537 0.439 1.0 LemonChiffon4
|
||||
0 1.000 0.973 0.863 1.0 cornsilk1
|
||||
0 0.933 0.910 0.804 1.0 cornsilk2
|
||||
0 0.804 0.784 0.694 1.0 cornsilk3
|
||||
0 0.545 0.533 0.471 1.0 cornsilk4
|
||||
0 1.000 1.000 0.941 1.0 ivory1
|
||||
0 0.933 0.933 0.878 1.0 ivory2
|
||||
0 0.804 0.804 0.757 1.0 ivory3
|
||||
0 0.545 0.545 0.514 1.0 ivory4
|
||||
0 0.941 1.000 0.941 1.0 honeydew1
|
||||
0 0.878 0.933 0.878 1.0 honeydew2
|
||||
0 0.757 0.804 0.757 1.0 honeydew3
|
||||
0 0.514 0.545 0.514 1.0 honeydew4
|
||||
0 1.000 0.941 0.961 1.0 LavenderBlush1
|
||||
0 0.933 0.878 0.898 1.0 LavenderBlush2
|
||||
0 0.804 0.757 0.773 1.0 LavenderBlush3
|
||||
0 0.545 0.514 0.525 1.0 LavenderBlush4
|
||||
0 1.000 0.894 0.882 1.0 MistyRose1
|
||||
0 0.933 0.835 0.824 1.0 MistyRose2
|
||||
0 0.804 0.718 0.710 1.0 MistyRose3
|
||||
0 0.545 0.490 0.482 1.0 MistyRose4
|
||||
0 0.941 1.000 1.000 1.0 azure1
|
||||
0 0.878 0.933 0.933 1.0 azure2
|
||||
0 0.757 0.804 0.804 1.0 azure3
|
||||
0 0.514 0.545 0.545 1.0 azure4
|
||||
0 0.514 0.435 1.000 1.0 SlateBlue1
|
||||
0 0.478 0.404 0.933 1.0 SlateBlue2
|
||||
0 0.412 0.349 0.804 1.0 SlateBlue3
|
||||
0 0.278 0.235 0.545 1.0 SlateBlue4
|
||||
0 0.282 0.463 1.000 1.0 RoyalBlue1
|
||||
0 0.263 0.431 0.933 1.0 RoyalBlue2
|
||||
0 0.227 0.373 0.804 1.0 RoyalBlue3
|
||||
0 0.153 0.251 0.545 1.0 RoyalBlue4
|
||||
0 0.000 0.000 1.000 1.0 blue1
|
||||
0 0.000 0.000 0.933 1.0 blue2
|
||||
0 0.000 0.000 0.804 1.0 blue3
|
||||
0 0.000 0.000 0.545 1.0 blue4
|
||||
0 0.118 0.565 1.000 1.0 DodgerBlue1
|
||||
0 0.110 0.525 0.933 1.0 DodgerBlue2
|
||||
0 0.094 0.455 0.804 1.0 DodgerBlue3
|
||||
0 0.063 0.306 0.545 1.0 DodgerBlue4
|
||||
0 0.388 0.722 1.000 1.0 SteelBlue1
|
||||
0 0.361 0.675 0.933 1.0 SteelBlue2
|
||||
0 0.310 0.580 0.804 1.0 SteelBlue3
|
||||
0 0.212 0.392 0.545 1.0 SteelBlue4
|
||||
0 0.000 0.749 1.000 1.0 DeepSkyBlue1
|
||||
0 0.000 0.698 0.933 1.0 DeepSkyBlue2
|
||||
0 0.000 0.604 0.804 1.0 DeepSkyBlue3
|
||||
0 0.000 0.408 0.545 1.0 DeepSkyBlue4
|
||||
0 0.529 0.808 1.000 1.0 SkyBlue1
|
||||
0 0.494 0.753 0.933 1.0 SkyBlue2
|
||||
0 0.424 0.651 0.804 1.0 SkyBlue3
|
||||
0 0.290 0.439 0.545 1.0 SkyBlue4
|
||||
0 0.690 0.886 1.000 1.0 LightSkyBlue1
|
||||
0 0.643 0.827 0.933 1.0 LightSkyBlue2
|
||||
0 0.553 0.714 0.804 1.0 LightSkyBlue3
|
||||
0 0.376 0.482 0.545 1.0 LightSkyBlue4
|
||||
0 0.776 0.886 1.000 1.0 SlateGray1
|
||||
0 0.725 0.827 0.933 1.0 SlateGray2
|
||||
0 0.624 0.714 0.804 1.0 SlateGray3
|
||||
0 0.424 0.482 0.545 1.0 SlateGray4
|
||||
0 0.792 0.882 1.000 1.0 LightSteelBlue1
|
||||
0 0.737 0.824 0.933 1.0 LightSteelBlue2
|
||||
0 0.635 0.710 0.804 1.0 LightSteelBlue3
|
||||
0 0.431 0.482 0.545 1.0 LightSteelBlue4
|
||||
0 0.749 0.937 1.000 1.0 LightBlue1
|
||||
0 0.698 0.875 0.933 1.0 LightBlue2
|
||||
0 0.604 0.753 0.804 1.0 LightBlue3
|
||||
0 0.408 0.514 0.545 1.0 LightBlue4
|
||||
0 0.878 1.000 1.000 1.0 LightCyan1
|
||||
0 0.820 0.933 0.933 1.0 LightCyan2
|
||||
0 0.706 0.804 0.804 1.0 LightCyan3
|
||||
0 0.478 0.545 0.545 1.0 LightCyan4
|
||||
0 0.733 1.000 1.000 1.0 PaleTurquoise1
|
||||
0 0.682 0.933 0.933 1.0 PaleTurquoise2
|
||||
0 0.588 0.804 0.804 1.0 PaleTurquoise3
|
||||
0 0.400 0.545 0.545 1.0 PaleTurquoise4
|
||||
0 0.596 0.961 1.000 1.0 CadetBlue1
|
||||
0 0.557 0.898 0.933 1.0 CadetBlue2
|
||||
0 0.478 0.773 0.804 1.0 CadetBlue3
|
||||
0 0.325 0.525 0.545 1.0 CadetBlue4
|
||||
0 0.000 0.961 1.000 1.0 turquoise1
|
||||
0 0.000 0.898 0.933 1.0 turquoise2
|
||||
0 0.000 0.773 0.804 1.0 turquoise3
|
||||
0 0.000 0.525 0.545 1.0 turquoise4
|
||||
0 0.000 1.000 1.000 1.0 cyan1
|
||||
0 0.000 0.933 0.933 1.0 cyan2
|
||||
0 0.000 0.804 0.804 1.0 cyan3
|
||||
0 0.000 0.545 0.545 1.0 cyan4
|
||||
0 0.592 1.000 1.000 1.0 DarkSlateGray1
|
||||
0 0.553 0.933 0.933 1.0 DarkSlateGray2
|
||||
0 0.475 0.804 0.804 1.0 DarkSlateGray3
|
||||
0 0.322 0.545 0.545 1.0 DarkSlateGray4
|
||||
0 0.498 1.000 0.831 1.0 aquamarine1
|
||||
0 0.463 0.933 0.776 1.0 aquamarine2
|
||||
0 0.400 0.804 0.667 1.0 aquamarine3
|
||||
0 0.271 0.545 0.455 1.0 aquamarine4
|
||||
0 0.757 1.000 0.757 1.0 DarkSeaGreen1
|
||||
0 0.706 0.933 0.706 1.0 DarkSeaGreen2
|
||||
0 0.608 0.804 0.608 1.0 DarkSeaGreen3
|
||||
0 0.412 0.545 0.412 1.0 DarkSeaGreen4
|
||||
0 0.329 1.000 0.624 1.0 SeaGreen1
|
||||
0 0.306 0.933 0.580 1.0 SeaGreen2
|
||||
0 0.263 0.804 0.502 1.0 SeaGreen3
|
||||
0 0.180 0.545 0.341 1.0 SeaGreen4
|
||||
0 0.604 1.000 0.604 1.0 PaleGreen1
|
||||
0 0.565 0.933 0.565 1.0 PaleGreen2
|
||||
0 0.486 0.804 0.486 1.0 PaleGreen3
|
||||
0 0.329 0.545 0.329 1.0 PaleGreen4
|
||||
0 0.000 1.000 0.498 1.0 SpringGreen1
|
||||
0 0.000 0.933 0.463 1.0 SpringGreen2
|
||||
0 0.000 0.804 0.400 1.0 SpringGreen3
|
||||
0 0.000 0.545 0.271 1.0 SpringGreen4
|
||||
0 0.000 1.000 0.000 1.0 green1
|
||||
0 0.000 0.933 0.000 1.0 green2
|
||||
0 0.000 0.804 0.000 1.0 green3
|
||||
0 0.000 0.545 0.000 1.0 green4
|
||||
0 0.498 1.000 0.000 1.0 chartreuse1
|
||||
0 0.463 0.933 0.000 1.0 chartreuse2
|
||||
0 0.400 0.804 0.000 1.0 chartreuse3
|
||||
0 0.271 0.545 0.000 1.0 chartreuse4
|
||||
0 0.753 1.000 0.243 1.0 OliveDrab1
|
||||
0 0.702 0.933 0.227 1.0 OliveDrab2
|
||||
0 0.604 0.804 0.196 1.0 OliveDrab3
|
||||
0 0.412 0.545 0.133 1.0 OliveDrab4
|
||||
0 0.792 1.000 0.439 1.0 DarkOliveGreen1
|
||||
0 0.737 0.933 0.408 1.0 DarkOliveGreen2
|
||||
0 0.635 0.804 0.353 1.0 DarkOliveGreen3
|
||||
0 0.431 0.545 0.239 1.0 DarkOliveGreen4
|
||||
0 1.000 0.965 0.561 1.0 khaki1
|
||||
0 0.933 0.902 0.522 1.0 khaki2
|
||||
0 0.804 0.776 0.451 1.0 khaki3
|
||||
0 0.545 0.525 0.306 1.0 khaki4
|
||||
0 1.000 0.925 0.545 1.0 LightGoldenrod1
|
||||
0 0.933 0.863 0.510 1.0 LightGoldenrod2
|
||||
0 0.804 0.745 0.439 1.0 LightGoldenrod3
|
||||
0 0.545 0.506 0.298 1.0 LightGoldenrod4
|
||||
0 1.000 1.000 0.878 1.0 LightYellow1
|
||||
0 0.933 0.933 0.820 1.0 LightYellow2
|
||||
0 0.804 0.804 0.706 1.0 LightYellow3
|
||||
0 0.545 0.545 0.478 1.0 LightYellow4
|
||||
0 1.000 1.000 0.000 1.0 yellow1
|
||||
0 0.933 0.933 0.000 1.0 yellow2
|
||||
0 0.804 0.804 0.000 1.0 yellow3
|
||||
0 0.545 0.545 0.000 1.0 yellow4
|
||||
0 1.000 0.843 0.000 1.0 gold1
|
||||
0 0.933 0.788 0.000 1.0 gold2
|
||||
0 0.804 0.678 0.000 1.0 gold3
|
||||
0 0.545 0.459 0.000 1.0 gold4
|
||||
0 1.000 0.757 0.145 1.0 goldenrod1
|
||||
0 0.933 0.706 0.133 1.0 goldenrod2
|
||||
0 0.804 0.608 0.114 1.0 goldenrod3
|
||||
0 0.545 0.412 0.078 1.0 goldenrod4
|
||||
0 1.000 0.725 0.059 1.0 DarkGoldenrod1
|
||||
0 0.933 0.678 0.055 1.0 DarkGoldenrod2
|
||||
0 0.804 0.584 0.047 1.0 DarkGoldenrod3
|
||||
0 0.545 0.396 0.031 1.0 DarkGoldenrod4
|
||||
0 1.000 0.757 0.757 1.0 RosyBrown1
|
||||
0 0.933 0.706 0.706 1.0 RosyBrown2
|
||||
0 0.804 0.608 0.608 1.0 RosyBrown3
|
||||
0 0.545 0.412 0.412 1.0 RosyBrown4
|
||||
0 1.000 0.416 0.416 1.0 IndianRed1
|
||||
0 0.933 0.388 0.388 1.0 IndianRed2
|
||||
0 0.804 0.333 0.333 1.0 IndianRed3
|
||||
0 0.545 0.227 0.227 1.0 IndianRed4
|
||||
0 1.000 0.510 0.278 1.0 sienna1
|
||||
0 0.933 0.475 0.259 1.0 sienna2
|
||||
0 0.804 0.408 0.224 1.0 sienna3
|
||||
0 0.545 0.278 0.149 1.0 sienna4
|
||||
0 1.000 0.827 0.608 1.0 burlywood1
|
||||
0 0.933 0.773 0.569 1.0 burlywood2
|
||||
0 0.804 0.667 0.490 1.0 burlywood3
|
||||
0 0.545 0.451 0.333 1.0 burlywood4
|
||||
0 1.000 0.906 0.729 1.0 wheat1
|
||||
0 0.933 0.847 0.682 1.0 wheat2
|
||||
0 0.804 0.729 0.588 1.0 wheat3
|
||||
0 0.545 0.494 0.400 1.0 wheat4
|
||||
0 1.000 0.647 0.310 1.0 tan1
|
||||
0 0.933 0.604 0.286 1.0 tan2
|
||||
0 0.804 0.522 0.247 1.0 tan3
|
||||
0 0.545 0.353 0.169 1.0 tan4
|
||||
0 1.000 0.498 0.141 1.0 chocolate1
|
||||
0 0.933 0.463 0.129 1.0 chocolate2
|
||||
0 0.804 0.400 0.114 1.0 chocolate3
|
||||
0 0.545 0.271 0.075 1.0 chocolate4
|
||||
0 1.000 0.188 0.188 1.0 firebrick1
|
||||
0 0.933 0.173 0.173 1.0 firebrick2
|
||||
0 0.804 0.149 0.149 1.0 firebrick3
|
||||
0 0.545 0.102 0.102 1.0 firebrick4
|
||||
0 1.000 0.251 0.251 1.0 brown1
|
||||
0 0.933 0.231 0.231 1.0 brown2
|
||||
0 0.804 0.200 0.200 1.0 brown3
|
||||
0 0.545 0.137 0.137 1.0 brown4
|
||||
0 1.000 0.549 0.412 1.0 salmon1
|
||||
0 0.933 0.510 0.384 1.0 salmon2
|
||||
0 0.804 0.439 0.329 1.0 salmon3
|
||||
0 0.545 0.298 0.224 1.0 salmon4
|
||||
0 1.000 0.627 0.478 1.0 LightSalmon1
|
||||
0 0.933 0.584 0.447 1.0 LightSalmon2
|
||||
0 0.804 0.506 0.384 1.0 LightSalmon3
|
||||
0 0.545 0.341 0.259 1.0 LightSalmon4
|
||||
0 1.000 0.647 0.000 1.0 orange1
|
||||
0 0.933 0.604 0.000 1.0 orange2
|
||||
0 0.804 0.522 0.000 1.0 orange3
|
||||
0 0.545 0.353 0.000 1.0 orange4
|
||||
0 1.000 0.498 0.000 1.0 DarkOrange1
|
||||
0 0.933 0.463 0.000 1.0 DarkOrange2
|
||||
0 0.804 0.400 0.000 1.0 DarkOrange3
|
||||
0 0.545 0.271 0.000 1.0 DarkOrange4
|
||||
0 1.000 0.447 0.337 1.0 coral1
|
||||
0 0.933 0.416 0.314 1.0 coral2
|
||||
0 0.804 0.357 0.271 1.0 coral3
|
||||
0 0.545 0.243 0.184 1.0 coral4
|
||||
0 1.000 0.388 0.278 1.0 tomato1
|
||||
0 0.933 0.361 0.259 1.0 tomato2
|
||||
0 0.804 0.310 0.224 1.0 tomato3
|
||||
0 0.545 0.212 0.149 1.0 tomato4
|
||||
0 1.000 0.271 0.000 1.0 OrangeRed1
|
||||
0 0.933 0.251 0.000 1.0 OrangeRed2
|
||||
0 0.804 0.216 0.000 1.0 OrangeRed3
|
||||
0 0.545 0.145 0.000 1.0 OrangeRed4
|
||||
0 1.000 0.000 0.000 1.0 red1
|
||||
0 0.933 0.000 0.000 1.0 red2
|
||||
0 0.804 0.000 0.000 1.0 red3
|
||||
0 0.545 0.000 0.000 1.0 red4
|
||||
0 1.000 0.078 0.576 1.0 DeepPink1
|
||||
0 0.933 0.071 0.537 1.0 DeepPink2
|
||||
0 0.804 0.063 0.463 1.0 DeepPink3
|
||||
0 0.545 0.039 0.314 1.0 DeepPink4
|
||||
0 1.000 0.431 0.706 1.0 HotPink1
|
||||
0 0.933 0.416 0.655 1.0 HotPink2
|
||||
0 0.804 0.376 0.565 1.0 HotPink3
|
||||
0 0.545 0.227 0.384 1.0 HotPink4
|
||||
0 1.000 0.710 0.773 1.0 pink1
|
||||
0 0.933 0.663 0.722 1.0 pink2
|
||||
0 0.804 0.569 0.620 1.0 pink3
|
||||
0 0.545 0.388 0.424 1.0 pink4
|
||||
0 1.000 0.682 0.725 1.0 LightPink1
|
||||
0 0.933 0.635 0.678 1.0 LightPink2
|
||||
0 0.804 0.549 0.584 1.0 LightPink3
|
||||
0 0.545 0.373 0.396 1.0 LightPink4
|
||||
0 1.000 0.510 0.671 1.0 PaleVioletRed1
|
||||
0 0.933 0.475 0.624 1.0 PaleVioletRed2
|
||||
0 0.804 0.408 0.537 1.0 PaleVioletRed3
|
||||
0 0.545 0.278 0.365 1.0 PaleVioletRed4
|
||||
0 1.000 0.204 0.702 1.0 maroon1
|
||||
0 0.933 0.188 0.655 1.0 maroon2
|
||||
0 0.804 0.161 0.565 1.0 maroon3
|
||||
0 0.545 0.110 0.384 1.0 maroon4
|
||||
0 1.000 0.243 0.588 1.0 VioletRed1
|
||||
0 0.933 0.227 0.549 1.0 VioletRed2
|
||||
0 0.804 0.196 0.471 1.0 VioletRed3
|
||||
0 0.545 0.133 0.322 1.0 VioletRed4
|
||||
0 1.000 0.000 1.000 1.0 magenta1
|
||||
0 0.933 0.000 0.933 1.0 magenta2
|
||||
0 0.804 0.000 0.804 1.0 magenta3
|
||||
0 0.545 0.000 0.545 1.0 magenta4
|
||||
0 1.000 0.514 0.980 1.0 orchid1
|
||||
0 0.933 0.478 0.914 1.0 orchid2
|
||||
0 0.804 0.412 0.788 1.0 orchid3
|
||||
0 0.545 0.278 0.537 1.0 orchid4
|
||||
0 1.000 0.733 1.000 1.0 plum1
|
||||
0 0.933 0.682 0.933 1.0 plum2
|
||||
0 0.804 0.588 0.804 1.0 plum3
|
||||
0 0.545 0.400 0.545 1.0 plum4
|
||||
0 0.878 0.400 1.000 1.0 MediumOrchid1
|
||||
0 0.820 0.373 0.933 1.0 MediumOrchid2
|
||||
0 0.706 0.322 0.804 1.0 MediumOrchid3
|
||||
0 0.478 0.216 0.545 1.0 MediumOrchid4
|
||||
0 0.749 0.243 1.000 1.0 DarkOrchid1
|
||||
0 0.698 0.227 0.933 1.0 DarkOrchid2
|
||||
0 0.604 0.196 0.804 1.0 DarkOrchid3
|
||||
0 0.408 0.133 0.545 1.0 DarkOrchid4
|
||||
0 0.608 0.188 1.000 1.0 purple1
|
||||
0 0.569 0.173 0.933 1.0 purple2
|
||||
0 0.490 0.149 0.804 1.0 purple3
|
||||
0 0.333 0.102 0.545 1.0 purple4
|
||||
0 0.671 0.510 1.000 1.0 MediumPurple1
|
||||
0 0.624 0.475 0.933 1.0 MediumPurple2
|
||||
0 0.537 0.408 0.804 1.0 MediumPurple3
|
||||
0 0.365 0.278 0.545 1.0 MediumPurple4
|
||||
0 1.000 0.882 1.000 1.0 thistle1
|
||||
0 0.933 0.824 0.933 1.0 thistle2
|
||||
0 0.804 0.710 0.804 1.0 thistle3
|
||||
0 0.545 0.482 0.545 1.0 thistle4
|
||||
0 0.000 0.000 0.000 1.0 gray0
|
||||
0 0.000 0.000 0.000 1.0 grey0
|
||||
0 0.012 0.012 0.012 1.0 gray1
|
||||
0 0.012 0.012 0.012 1.0 grey1
|
||||
0 0.020 0.020 0.020 1.0 gray2
|
||||
0 0.020 0.020 0.020 1.0 grey2
|
||||
0 0.031 0.031 0.031 1.0 gray3
|
||||
0 0.031 0.031 0.031 1.0 grey3
|
||||
0 0.039 0.039 0.039 1.0 gray4
|
||||
0 0.039 0.039 0.039 1.0 grey4
|
||||
0 0.051 0.051 0.051 1.0 gray5
|
||||
0 0.051 0.051 0.051 1.0 grey5
|
||||
0 0.059 0.059 0.059 1.0 gray6
|
||||
0 0.059 0.059 0.059 1.0 grey6
|
||||
0 0.071 0.071 0.071 1.0 gray7
|
||||
0 0.071 0.071 0.071 1.0 grey7
|
||||
0 0.078 0.078 0.078 1.0 gray8
|
||||
0 0.078 0.078 0.078 1.0 grey8
|
||||
0 0.090 0.090 0.090 1.0 gray9
|
||||
0 0.090 0.090 0.090 1.0 grey9
|
||||
0 0.102 0.102 0.102 1.0 gray10
|
||||
0 0.102 0.102 0.102 1.0 grey10
|
||||
0 0.110 0.110 0.110 1.0 gray11
|
||||
0 0.110 0.110 0.110 1.0 grey11
|
||||
0 0.122 0.122 0.122 1.0 gray12
|
||||
0 0.122 0.122 0.122 1.0 grey12
|
||||
0 0.129 0.129 0.129 1.0 gray13
|
||||
0 0.129 0.129 0.129 1.0 grey13
|
||||
0 0.141 0.141 0.141 1.0 gray14
|
||||
0 0.141 0.141 0.141 1.0 grey14
|
||||
0 0.149 0.149 0.149 1.0 gray15
|
||||
0 0.149 0.149 0.149 1.0 grey15
|
||||
0 0.161 0.161 0.161 1.0 gray16
|
||||
0 0.161 0.161 0.161 1.0 grey16
|
||||
0 0.169 0.169 0.169 1.0 gray17
|
||||
0 0.169 0.169 0.169 1.0 grey17
|
||||
0 0.180 0.180 0.180 1.0 gray18
|
||||
0 0.180 0.180 0.180 1.0 grey18
|
||||
0 0.188 0.188 0.188 1.0 gray19
|
||||
0 0.188 0.188 0.188 1.0 grey19
|
||||
0 0.200 0.200 0.200 1.0 gray20
|
||||
0 0.200 0.200 0.200 1.0 grey20
|
||||
0 0.212 0.212 0.212 1.0 gray21
|
||||
0 0.212 0.212 0.212 1.0 grey21
|
||||
0 0.220 0.220 0.220 1.0 gray22
|
||||
0 0.220 0.220 0.220 1.0 grey22
|
||||
0 0.231 0.231 0.231 1.0 gray23
|
||||
0 0.231 0.231 0.231 1.0 grey23
|
||||
0 0.239 0.239 0.239 1.0 gray24
|
||||
0 0.239 0.239 0.239 1.0 grey24
|
||||
0 0.251 0.251 0.251 1.0 gray25
|
||||
0 0.251 0.251 0.251 1.0 grey25
|
||||
0 0.259 0.259 0.259 1.0 gray26
|
||||
0 0.259 0.259 0.259 1.0 grey26
|
||||
0 0.271 0.271 0.271 1.0 gray27
|
||||
0 0.271 0.271 0.271 1.0 grey27
|
||||
0 0.278 0.278 0.278 1.0 gray28
|
||||
0 0.278 0.278 0.278 1.0 grey28
|
||||
0 0.290 0.290 0.290 1.0 gray29
|
||||
0 0.290 0.290 0.290 1.0 grey29
|
||||
0 0.302 0.302 0.302 1.0 gray30
|
||||
0 0.302 0.302 0.302 1.0 grey30
|
||||
0 0.310 0.310 0.310 1.0 gray31
|
||||
0 0.310 0.310 0.310 1.0 grey31
|
||||
0 0.322 0.322 0.322 1.0 gray32
|
||||
0 0.322 0.322 0.322 1.0 grey32
|
||||
0 0.329 0.329 0.329 1.0 gray33
|
||||
0 0.329 0.329 0.329 1.0 grey33
|
||||
0 0.341 0.341 0.341 1.0 gray34
|
||||
0 0.341 0.341 0.341 1.0 grey34
|
||||
0 0.349 0.349 0.349 1.0 gray35
|
||||
0 0.349 0.349 0.349 1.0 grey35
|
||||
0 0.361 0.361 0.361 1.0 gray36
|
||||
0 0.361 0.361 0.361 1.0 grey36
|
||||
0 0.369 0.369 0.369 1.0 gray37
|
||||
0 0.369 0.369 0.369 1.0 grey37
|
||||
0 0.380 0.380 0.380 1.0 gray38
|
||||
0 0.380 0.380 0.380 1.0 grey38
|
||||
0 0.388 0.388 0.388 1.0 gray39
|
||||
0 0.388 0.388 0.388 1.0 grey39
|
||||
0 0.400 0.400 0.400 1.0 gray40
|
||||
0 0.400 0.400 0.400 1.0 grey40
|
||||
0 0.412 0.412 0.412 1.0 gray41
|
||||
0 0.412 0.412 0.412 1.0 grey41
|
||||
0 0.420 0.420 0.420 1.0 gray42
|
||||
0 0.420 0.420 0.420 1.0 grey42
|
||||
0 0.431 0.431 0.431 1.0 gray43
|
||||
0 0.431 0.431 0.431 1.0 grey43
|
||||
0 0.439 0.439 0.439 1.0 gray44
|
||||
0 0.439 0.439 0.439 1.0 grey44
|
||||
0 0.451 0.451 0.451 1.0 gray45
|
||||
0 0.451 0.451 0.451 1.0 grey45
|
||||
0 0.459 0.459 0.459 1.0 gray46
|
||||
0 0.459 0.459 0.459 1.0 grey46
|
||||
0 0.471 0.471 0.471 1.0 gray47
|
||||
0 0.471 0.471 0.471 1.0 grey47
|
||||
0 0.478 0.478 0.478 1.0 gray48
|
||||
0 0.478 0.478 0.478 1.0 grey48
|
||||
0 0.490 0.490 0.490 1.0 gray49
|
||||
0 0.490 0.490 0.490 1.0 grey49
|
||||
0 0.498 0.498 0.498 1.0 gray50
|
||||
0 0.498 0.498 0.498 1.0 grey50
|
||||
0 0.510 0.510 0.510 1.0 gray51
|
||||
0 0.510 0.510 0.510 1.0 grey51
|
||||
0 0.522 0.522 0.522 1.0 gray52
|
||||
0 0.522 0.522 0.522 1.0 grey52
|
||||
0 0.529 0.529 0.529 1.0 gray53
|
||||
0 0.529 0.529 0.529 1.0 grey53
|
||||
0 0.541 0.541 0.541 1.0 gray54
|
||||
0 0.541 0.541 0.541 1.0 grey54
|
||||
0 0.549 0.549 0.549 1.0 gray55
|
||||
0 0.549 0.549 0.549 1.0 grey55
|
||||
0 0.561 0.561 0.561 1.0 gray56
|
||||
0 0.561 0.561 0.561 1.0 grey56
|
||||
0 0.569 0.569 0.569 1.0 gray57
|
||||
0 0.569 0.569 0.569 1.0 grey57
|
||||
0 0.580 0.580 0.580 1.0 gray58
|
||||
0 0.580 0.580 0.580 1.0 grey58
|
||||
0 0.588 0.588 0.588 1.0 gray59
|
||||
0 0.588 0.588 0.588 1.0 grey59
|
||||
0 0.600 0.600 0.600 1.0 gray60
|
||||
0 0.600 0.600 0.600 1.0 grey60
|
||||
0 0.612 0.612 0.612 1.0 gray61
|
||||
0 0.612 0.612 0.612 1.0 grey61
|
||||
0 0.620 0.620 0.620 1.0 gray62
|
||||
0 0.620 0.620 0.620 1.0 grey62
|
||||
0 0.631 0.631 0.631 1.0 gray63
|
||||
0 0.631 0.631 0.631 1.0 grey63
|
||||
0 0.639 0.639 0.639 1.0 gray64
|
||||
0 0.639 0.639 0.639 1.0 grey64
|
||||
0 0.651 0.651 0.651 1.0 gray65
|
||||
0 0.651 0.651 0.651 1.0 grey65
|
||||
0 0.659 0.659 0.659 1.0 gray66
|
||||
0 0.659 0.659 0.659 1.0 grey66
|
||||
0 0.671 0.671 0.671 1.0 gray67
|
||||
0 0.671 0.671 0.671 1.0 grey67
|
||||
0 0.678 0.678 0.678 1.0 gray68
|
||||
0 0.678 0.678 0.678 1.0 grey68
|
||||
0 0.690 0.690 0.690 1.0 gray69
|
||||
0 0.690 0.690 0.690 1.0 grey69
|
||||
0 0.702 0.702 0.702 1.0 gray70
|
||||
0 0.702 0.702 0.702 1.0 grey70
|
||||
0 0.710 0.710 0.710 1.0 gray71
|
||||
0 0.710 0.710 0.710 1.0 grey71
|
||||
0 0.722 0.722 0.722 1.0 gray72
|
||||
0 0.722 0.722 0.722 1.0 grey72
|
||||
0 0.729 0.729 0.729 1.0 gray73
|
||||
0 0.729 0.729 0.729 1.0 grey73
|
||||
0 0.741 0.741 0.741 1.0 gray74
|
||||
0 0.741 0.741 0.741 1.0 grey74
|
||||
0 0.749 0.749 0.749 1.0 gray75
|
||||
0 0.749 0.749 0.749 1.0 grey75
|
||||
0 0.761 0.761 0.761 1.0 gray76
|
||||
0 0.761 0.761 0.761 1.0 grey76
|
||||
0 0.769 0.769 0.769 1.0 gray77
|
||||
0 0.769 0.769 0.769 1.0 grey77
|
||||
0 0.780 0.780 0.780 1.0 gray78
|
||||
0 0.780 0.780 0.780 1.0 grey78
|
||||
0 0.788 0.788 0.788 1.0 gray79
|
||||
0 0.788 0.788 0.788 1.0 grey79
|
||||
0 0.800 0.800 0.800 1.0 gray80
|
||||
0 0.800 0.800 0.800 1.0 grey80
|
||||
0 0.812 0.812 0.812 1.0 gray81
|
||||
0 0.812 0.812 0.812 1.0 grey81
|
||||
0 0.820 0.820 0.820 1.0 gray82
|
||||
0 0.820 0.820 0.820 1.0 grey82
|
||||
0 0.831 0.831 0.831 1.0 gray83
|
||||
0 0.831 0.831 0.831 1.0 grey83
|
||||
0 0.839 0.839 0.839 1.0 gray84
|
||||
0 0.839 0.839 0.839 1.0 grey84
|
||||
0 0.851 0.851 0.851 1.0 gray85
|
||||
0 0.851 0.851 0.851 1.0 grey85
|
||||
0 0.859 0.859 0.859 1.0 gray86
|
||||
0 0.859 0.859 0.859 1.0 grey86
|
||||
0 0.871 0.871 0.871 1.0 gray87
|
||||
0 0.871 0.871 0.871 1.0 grey87
|
||||
0 0.878 0.878 0.878 1.0 gray88
|
||||
0 0.878 0.878 0.878 1.0 grey88
|
||||
0 0.890 0.890 0.890 1.0 gray89
|
||||
0 0.890 0.890 0.890 1.0 grey89
|
||||
0 0.898 0.898 0.898 1.0 gray90
|
||||
0 0.898 0.898 0.898 1.0 grey90
|
||||
0 0.910 0.910 0.910 1.0 gray91
|
||||
0 0.910 0.910 0.910 1.0 grey91
|
||||
0 0.922 0.922 0.922 1.0 gray92
|
||||
0 0.922 0.922 0.922 1.0 grey92
|
||||
0 0.929 0.929 0.929 1.0 gray93
|
||||
0 0.929 0.929 0.929 1.0 grey93
|
||||
0 0.941 0.941 0.941 1.0 gray94
|
||||
0 0.941 0.941 0.941 1.0 grey94
|
||||
0 0.949 0.949 0.949 1.0 gray95
|
||||
0 0.949 0.949 0.949 1.0 grey95
|
||||
0 0.961 0.961 0.961 1.0 gray96
|
||||
0 0.961 0.961 0.961 1.0 grey96
|
||||
0 0.969 0.969 0.969 1.0 gray97
|
||||
0 0.969 0.969 0.969 1.0 grey97
|
||||
0 0.980 0.980 0.980 1.0 gray98
|
||||
0 0.980 0.980 0.980 1.0 grey98
|
||||
0 0.988 0.988 0.988 1.0 gray99
|
||||
0 0.988 0.988 0.988 1.0 grey99
|
||||
0 1.000 1.000 1.000 1.0 gray100
|
||||
0 1.000 1.000 1.000 1.0 grey100
|
||||
0 0.663 0.663 0.663 1.0 dark grey
|
||||
0 0.663 0.663 0.663 1.0 DarkGrey
|
||||
0 0.663 0.663 0.663 1.0 dark gray
|
||||
0 0.663 0.663 0.663 1.0 DarkGray
|
||||
0 0.000 0.000 0.545 1.0 dark blue
|
||||
0 0.000 0.000 0.545 1.0 DarkBlue
|
||||
0 0.000 0.545 0.545 1.0 dark cyan
|
||||
0 0.000 0.545 0.545 1.0 DarkCyan
|
||||
0 0.545 0.000 0.545 1.0 dark magenta
|
||||
0 0.545 0.000 0.545 1.0 DarkMagenta
|
||||
0 0.545 0.000 0.000 1.0 dark red
|
||||
0 0.545 0.000 0.000 1.0 DarkRed
|
||||
0 0.565 0.933 0.565 1.0 light green
|
||||
0 0.565 0.933 0.565 1.0 LightGreen
|
||||
0 0.500 0.500 0.500 1.0 Gray
|
||||
0 0.500 0.500 0.500 1.0 Grey
|
||||
0 0.667 0.667 0.667 1.0 Light Gray
|
||||
0 0.667 0.667 0.667 1.0 Light Grey
|
||||
0 0.000 0.000 0.000 0.0 Highlight
|
1
lib-src/.gitignore
vendored
1
lib-src/.gitignore
vendored
|
@ -11,6 +11,7 @@ etags
|
|||
fakemail
|
||||
getopt.h
|
||||
hexl
|
||||
mac-fix-env
|
||||
make-docfile
|
||||
movemail
|
||||
obj
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* .cvsignore: Add mac-fix-env.
|
||||
* mac-fix-env.m: New file, automatically update
|
||||
~/.MacOSX/environment.plist on OS X systems to expose environment
|
||||
variables inside Emacs started from icon.
|
||||
* Makefile.in: Add -universal to CFLAGS on OS X, add mac-fix-env to
|
||||
programs to build.
|
||||
* make-docfile.c: Add .m to list of file extensions.
|
||||
|
||||
2008-07-12 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* movemail.c (main): Use int instead of WAITTYPE.
|
||||
|
|
|
@ -144,6 +144,23 @@ MOVE_FLAGS=
|
|||
#define NOT_C_CODE
|
||||
#include "../src/config.h"
|
||||
|
||||
#if defined(COCOA)
|
||||
/* Build these programs as universal binaries. */
|
||||
CFLAGS := $(CFLAGS) -universal
|
||||
/* Add mac-fix-env for OS X systems running NS version. */
|
||||
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} b2m${EXEEXT} ebrowse${EXEEXT} mac-fix-env${EXEEXT}
|
||||
#endif
|
||||
|
||||
/* Some platforms that the GNUstep port runs on put strip options in
|
||||
INSTALL_PROGRAM which cause errors. But, not being sure all other
|
||||
platforms are setting this, we will only use the alternative
|
||||
INSTALL_SCRIPT variable on GNUstep/Cocoa builds. */
|
||||
#ifndef HAVE_NS
|
||||
INSTALL_SCRIPT = @INSTALL_PROGRAM@
|
||||
#else
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
#endif
|
||||
|
||||
/* Some machines don\'t find the standard C libraries in the usual place. */
|
||||
#ifndef ORDINARY_LINK
|
||||
#ifndef LIB_STANDARD_LIBSRC
|
||||
|
@ -253,12 +270,22 @@ CPP_CFLAGS = C_SWITCH_SYSTEM C_SWITCH_MACHINE -DHAVE_CONFIG_H \
|
|||
BASE_CFLAGS = C_SWITCH_SYSTEM C_SWITCH_MACHINE -DHAVE_CONFIG_H \
|
||||
-I. -I../src -I${srcdir} -I${srcdir}/../src ${CPPFLAGS} ${CFLAGS}
|
||||
|
||||
.SUFFIXES: .m
|
||||
|
||||
/* This is the default compilation command.
|
||||
But we should never rely on it, because some make version
|
||||
failed to find it for getopt.o.
|
||||
Using an explicit command made it work. */
|
||||
.c.o:
|
||||
${CC} -c ${CPP_CFLAGS} $<
|
||||
#ifdef HAVE_NS
|
||||
.m.o:
|
||||
#ifdef GNUSTEP
|
||||
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString $<
|
||||
#else
|
||||
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
|
||||
#endif
|
||||
#endif
|
||||
|
||||
all: ${DONT_INSTALL} ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
|
||||
|
||||
|
@ -455,3 +482,8 @@ update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
|
|||
update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
|
||||
$(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
|
||||
-DHAVE_SHARED_GAME_DIR="\"$(gamedir)\""
|
||||
|
||||
#if defined(COCOA)
|
||||
mac-fix-env: ${srcdir}/mac-fix-env.m
|
||||
$(CC) -o mac-fix-env ${srcdir}/mac-fix-env.m -prebind -framework Foundation
|
||||
#endif
|
||||
|
|
71
lib-src/mac-fix-env.m
Normal file
71
lib-src/mac-fix-env.m
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* mac-fix-env: A small utility to pick up the shell environment on MacOS X
|
||||
and insert it into the file ~/.MacOSX/environment.plist
|
||||
creating if necessary.
|
||||
Copyright (C) 1989, 1993, 2005, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
usage:
|
||||
Run from command line (in Terminal) once or whenever path changes:
|
||||
|
||||
/Applications/Emacs.app/Contents/MacOS/bin/mac-fix-env
|
||||
|
||||
(change initial part to where you installed Emacs).
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
NSMutableDictionary *envPlist;
|
||||
NSString *file = [[NSHomeDirectory()
|
||||
stringByAppendingPathComponent:@".MacOSX"]
|
||||
stringByAppendingPathComponent:@"environment.plist"];
|
||||
NSString *path = [NSString stringWithCString: getenv("PATH")];
|
||||
|
||||
envPlist = [[NSDictionary dictionaryWithContentsOfFile: file] mutableCopy];
|
||||
if (envPlist == nil)
|
||||
{
|
||||
// create
|
||||
NSString *dir = [file stringByDeletingLastPathComponent];
|
||||
envPlist = [NSMutableDictionary dictionaryWithCapacity: 5];
|
||||
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath: dir] == NO)
|
||||
{
|
||||
if ([[NSFileManager defaultManager] createDirectoryAtPath:dir
|
||||
attributes:nil]==NO)
|
||||
{
|
||||
NSLog(@":\nCould not create directory at '%@'; aborting.",dir);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[envPlist setObject: path forKey: @"PATH"];
|
||||
|
||||
if ([envPlist writeToFile: file atomically: YES] == NO)
|
||||
{
|
||||
NSLog(@":\nCould not write file at '%@'; aborting.", file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
NSLog(@":\nWrote file to '%@'.\nPlease inspect it to make sure PATH is correct.", file);
|
||||
return 0;
|
||||
}
|
|
@ -533,7 +533,7 @@ write_c_args (out, func, buf, minargs, maxargs)
|
|||
}
|
||||
|
||||
/* Read through a c file. If a .o file is named,
|
||||
the corresponding .c file is read instead.
|
||||
the corresponding .c or .m file is read instead.
|
||||
Looks for DEFUN constructs such as are defined in ../src/lisp.h.
|
||||
Accepts any word starting DEF... so it finds DEFSIMPLE and DEFPRED. */
|
||||
|
||||
|
@ -555,6 +555,15 @@ scan_c_file (filename, mode)
|
|||
|
||||
infile = fopen (filename, mode);
|
||||
|
||||
if (infile == NULL && extension == 'o')
|
||||
{
|
||||
/* try .m */
|
||||
filename[strlen (filename) - 1] = 'm';
|
||||
infile = fopen (filename, mode);
|
||||
if (infile == NULL)
|
||||
filename[strlen (filename) - 1] = 'c'; /* don't confuse people */
|
||||
}
|
||||
|
||||
/* No error if non-ex input file */
|
||||
if (infile == NULL)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,42 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
* ns-carbon-compat.el: New file: user-visible compatibility of
|
||||
NeXTstep port with Carbon port.
|
||||
* ns-grabenv.el: New file: functionality useful on OS X platform to
|
||||
expose environment variables inside Emacs started from icon.
|
||||
* Makefile.in: Add above three files.
|
||||
* cus-edit.el
|
||||
* cus-face.el
|
||||
* disp-table.el
|
||||
* faces.el
|
||||
* info.el
|
||||
* mouse.el
|
||||
* mwheel.el
|
||||
* simple.el: Add ns to window systems treated as GUIs.
|
||||
* facemenu.el (facemenu-read-color): Don't require a name match under
|
||||
NS, to allow numeric color entry.
|
||||
* frame.el (make-frame-on-display): Follow code for 'x in initializing
|
||||
'ns window system if need be.
|
||||
(various): Add 'ns as described above.
|
||||
* loadup.el: Load ns-win.el if ns-windowing is active.
|
||||
* startup.el (command-line-ns-option-alist): New constant to handle NS
|
||||
windowing system specific command line args analogous to how they are
|
||||
handled for X windows.
|
||||
(command-line-1): Use the above where appropriate.
|
||||
* version.el: Add NS port version.
|
||||
* woman.el (woman-man.conf-path): Add /usr/share/misc to init path on
|
||||
Darwin (usually OS X) systems.
|
||||
(woman-use-own-frame): Include 'ns in list of GUI window systems.
|
||||
* emulation/viper-util.el (ns-display-color-p)
|
||||
(ns-color-defined-p): Remove these (caustically-commented) outdated
|
||||
compensations for a port that was never itself integrated until now.
|
||||
* gnus/gnus-util.el (gnus-select-frame-set-input-focus): Add support
|
||||
for NS window system.
|
||||
* international/mule-cmds.el: Add 'ns to list of special-cased window
|
||||
systems (probably most of these, x/w32/mac/ns could be changed to
|
||||
window-system non-nil).
|
||||
* term/ns-win.el: New file: lisp-side support for NS windowing system.
|
||||
|
||||
|
||||
2008-07-14 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* term/w32-win.el (x-handle-switch, x-handle-name-switch)
|
||||
|
|
|
@ -867,6 +867,8 @@ ELCFILES = \
|
|||
$(lisp)/net/zeroconf.elc \
|
||||
$(lisp)/newcomment.elc \
|
||||
$(lisp)/novice.elc \
|
||||
$(lisp)/ns-grabenv.elc \
|
||||
$(lisp)/ns-carbon-compat.elc \
|
||||
$(lisp)/nxml/nxml-enc.elc \
|
||||
$(lisp)/nxml/nxml-glyph.elc \
|
||||
$(lisp)/nxml/nxml-maint.elc \
|
||||
|
@ -1110,6 +1112,7 @@ ELCFILES = \
|
|||
$(lisp)/tempo.elc \
|
||||
$(lisp)/term.elc \
|
||||
$(lisp)/term/mac-win.elc \
|
||||
$(lisp)/term/ns-win.elc \
|
||||
$(lisp)/term/pc-win.elc \
|
||||
$(lisp)/term/rxvt.elc \
|
||||
$(lisp)/term/sun.elc \
|
||||
|
|
|
@ -2068,7 +2068,7 @@ and `face'."
|
|||
;;; The `custom' Widget.
|
||||
|
||||
(defface custom-button
|
||||
'((((type x w32 mac) (class color)) ; Like default modeline
|
||||
'((((type x w32 mac ns) (class color)) ; Like default modeline
|
||||
(:box (:line-width 2 :style released-button)
|
||||
:background "lightgrey" :foreground "black"))
|
||||
(t
|
||||
|
@ -2080,7 +2080,7 @@ and `face'."
|
|||
(put 'custom-button-face 'face-alias 'custom-button)
|
||||
|
||||
(defface custom-button-mouse
|
||||
'((((type x w32 mac) (class color))
|
||||
'((((type x w32 mac ns) (class color))
|
||||
(:box (:line-width 2 :style released-button)
|
||||
:background "grey90" :foreground "black"))
|
||||
(t
|
||||
|
@ -2102,7 +2102,7 @@ and `face'."
|
|||
(if custom-raised-buttons 'custom-button-mouse 'highlight))
|
||||
|
||||
(defface custom-button-pressed
|
||||
'((((type x w32 mac) (class color))
|
||||
'((((type x w32 mac ns) (class color))
|
||||
(:box (:line-width 2 :style pressed-button)
|
||||
:background "lightgrey" :foreground "black"))
|
||||
(t
|
||||
|
@ -3163,8 +3163,12 @@ Windows NT/9X.")
|
|||
w32)
|
||||
(const :format "MAC "
|
||||
:sibling-args (:help-echo "\
|
||||
Macintosh OS.")
|
||||
Macintosh OS (Carbon interface).")
|
||||
mac)
|
||||
(const :format "NS "
|
||||
:sibling-args (:help-echo "\
|
||||
GNUstep or Macintosh OS Cocoa interface.")
|
||||
ns)
|
||||
(const :format "DOS "
|
||||
:sibling-args (:help-echo "\
|
||||
Plain MS-DOS.")
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
;; Create frame-local faces
|
||||
(dolist (frame (frame-list))
|
||||
(face-spec-set-2 face frame value)
|
||||
(when (memq (window-system frame) '(x w32 mac))
|
||||
(when (memq (window-system frame) '(x w32 mac ns))
|
||||
(setq have-window-system t)))
|
||||
;; When making a face after frames already exist
|
||||
(if have-window-system
|
||||
|
|
|
@ -142,7 +142,7 @@ Valid symbols are `truncation', `wrap', `escape', `control',
|
|||
"Display character C as character SC in the g1 character set.
|
||||
This function assumes that your terminal uses the SO/SI characters;
|
||||
it is meaningless for an X frame."
|
||||
(if (memq window-system '(x w32 mac))
|
||||
(if (memq window-system '(x w32 mac ns))
|
||||
(error "Cannot use string glyphs in a windowing system"))
|
||||
(or standard-display-table
|
||||
(setq standard-display-table (make-display-table)))
|
||||
|
@ -154,7 +154,7 @@ it is meaningless for an X frame."
|
|||
"Display character C as character GC in graphics character set.
|
||||
This function assumes VT100-compatible escapes; it is meaningless for an
|
||||
X frame."
|
||||
(if (memq window-system '(x w32 mac))
|
||||
(if (memq window-system '(x w32 mac ns))
|
||||
(error "Cannot use string glyphs in a windowing system"))
|
||||
(or standard-display-table
|
||||
(setq standard-display-table (make-display-table)))
|
||||
|
@ -243,7 +243,7 @@ for users who call this function in `.emacs'."
|
|||
(equal (aref standard-display-table 161) [161])))
|
||||
(progn
|
||||
(standard-display-default 160 255)
|
||||
(unless (or (memq window-system '(x w32 mac)))
|
||||
(unless (or (memq window-system '(x w32 mac ns)))
|
||||
(and (terminal-coding-system)
|
||||
(set-terminal-coding-system nil))))
|
||||
|
||||
|
@ -255,7 +255,7 @@ for users who call this function in `.emacs'."
|
|||
;; unless some other has been specified.
|
||||
(if (equal current-language-environment "English")
|
||||
(set-language-environment "latin-1"))
|
||||
(unless (or noninteractive (memq window-system '(x w32 mac)))
|
||||
(unless (or noninteractive (memq window-system '(x w32 mac ns)))
|
||||
;; Send those codes literally to a character-based terminal.
|
||||
;; If we are using single-byte characters,
|
||||
;; it doesn't matter which coding system we use.
|
||||
|
|
|
@ -52,14 +52,6 @@
|
|||
(require 'viper-init)
|
||||
|
||||
|
||||
;; A fix for NeXT Step
|
||||
;; Should go away, when NS people fix the design flaw, which leaves the
|
||||
;; two x-* functions undefined.
|
||||
(if (and (not (fboundp 'x-display-color-p)) (fboundp 'ns-display-color-p))
|
||||
(fset 'x-display-color-p (symbol-function 'ns-display-color-p)))
|
||||
(if (and (not (fboundp 'x-color-defined-p)) (fboundp 'ns-color-defined-p))
|
||||
(fset 'x-color-defined-p (symbol-function 'ns-color-defined-p)))
|
||||
|
||||
|
||||
(defalias 'viper-overlay-p
|
||||
(if (featurep 'xemacs) 'extentp 'overlayp))
|
||||
|
|
|
@ -460,10 +460,11 @@ These special properties include `invisible', `intangible' and `read-only'."
|
|||
(defun facemenu-read-color (&optional prompt)
|
||||
"Read a color using the minibuffer."
|
||||
(let* ((completion-ignore-case t)
|
||||
(require-match (not (eq window-system 'ns)))
|
||||
(col (completing-read (or prompt "Color: ")
|
||||
(or facemenu-color-alist
|
||||
(defined-colors))
|
||||
nil t)))
|
||||
nil require-match)))
|
||||
(if (equal "" col)
|
||||
nil
|
||||
col)))
|
||||
|
|
|
@ -338,7 +338,7 @@ specifies an invalid attribute."
|
|||
|
||||
(defun set-face-attributes-from-resources (face frame)
|
||||
"Set attributes of FACE from X resources for FRAME."
|
||||
(when (memq (framep frame) '(x w32 mac))
|
||||
(when (memq (framep frame) '(x w32 mac ns))
|
||||
(dolist (definition face-x-resources)
|
||||
(let ((attribute (car definition)))
|
||||
(dolist (entry (cdr definition))
|
||||
|
@ -1010,7 +1010,7 @@ an integer value."
|
|||
((:height)
|
||||
'integerp)
|
||||
(:stipple
|
||||
(and (memq (window-system frame) '(x w32 mac))
|
||||
(and (memq (window-system frame) '(x w32 mac ns))
|
||||
(mapcar #'list
|
||||
(apply #'nconc
|
||||
(mapcar (lambda (dir)
|
||||
|
@ -1129,7 +1129,7 @@ of a global face. Value is the new attribute value."
|
|||
;; explicitly in VALID, using color approximation code
|
||||
;; in tty-colors.el.
|
||||
(when (and (memq attribute '(:foreground :background))
|
||||
(not (memq (window-system frame) '(x w32 mac)))
|
||||
(not (memq (window-system frame) '(x w32 mac ns)))
|
||||
(not (member new-value
|
||||
'("unspecified"
|
||||
"unspecified-fg" "unspecified-bg"))))
|
||||
|
@ -1624,7 +1624,7 @@ The argument FRAME specifies which frame to try.
|
|||
The value may be different for frames on different display types.
|
||||
If FRAME doesn't support colors, the value is nil.
|
||||
If FRAME is nil, that stands for the selected frame."
|
||||
(if (memq (framep (or frame (selected-frame))) '(x w32 mac))
|
||||
(if (memq (framep (or frame (selected-frame))) '(x w32 mac ns))
|
||||
(xw-defined-colors frame)
|
||||
(mapcar 'car (tty-color-alist frame))))
|
||||
(defalias 'x-defined-colors 'defined-colors)
|
||||
|
@ -1638,7 +1638,7 @@ If COLOR is the symbol `unspecified' or one of the strings
|
|||
\"unspecified-fg\" or \"unspecified-bg\", the value is nil."
|
||||
(if (member color '(unspecified "unspecified-bg" "unspecified-fg"))
|
||||
nil
|
||||
(if (member (framep (or frame (selected-frame))) '(x w32 mac))
|
||||
(if (member (framep (or frame (selected-frame))) '(x w32 mac ns))
|
||||
(xw-color-defined-p color frame)
|
||||
(numberp (tty-color-translate color frame)))))
|
||||
(defalias 'x-color-defined-p 'color-defined-p)
|
||||
|
@ -1656,7 +1656,7 @@ If COLOR is the symbol `unspecified' or one of the strings
|
|||
\"unspecified-fg\" or \"unspecified-bg\", the value is nil."
|
||||
(if (member color '(unspecified "unspecified-fg" "unspecified-bg"))
|
||||
nil
|
||||
(if (memq (framep (or frame (selected-frame))) '(x w32 mac))
|
||||
(if (memq (framep (or frame (selected-frame))) '(x w32 mac ns))
|
||||
(xw-color-values color frame)
|
||||
(tty-color-values color frame))))
|
||||
(defalias 'x-color-values 'color-values)
|
||||
|
@ -1668,7 +1668,7 @@ If COLOR is the symbol `unspecified' or one of the strings
|
|||
The optional argument DISPLAY specifies which display to ask about.
|
||||
DISPLAY should be either a frame or a display name (a string).
|
||||
If omitted or nil, that stands for the selected frame's display."
|
||||
(if (memq (framep-on-display display) '(x w32 mac))
|
||||
(if (memq (framep-on-display display) '(x w32 mac ns))
|
||||
(xw-display-color-p display)
|
||||
(tty-display-color-p display)))
|
||||
(defalias 'x-display-color-p 'display-color-p)
|
||||
|
@ -1679,7 +1679,7 @@ If omitted or nil, that stands for the selected frame's display."
|
|||
"Return non-nil if frames on DISPLAY can display shades of gray."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-grayscale-p display))
|
||||
(t
|
||||
(> (tty-color-gray-shades display) 2)))))
|
||||
|
@ -2495,7 +2495,7 @@ Note: Other faces cannot inherit from the cursor face."
|
|||
'((default
|
||||
:box (:line-width 1 :style released-button)
|
||||
:foreground "black")
|
||||
(((type x w32 mac) (class color))
|
||||
(((type x w32 mac ns) (class color))
|
||||
:background "grey75")
|
||||
(((type x) (class mono))
|
||||
:background "grey"))
|
||||
|
|
|
@ -610,12 +610,19 @@ is not considered (see `next-frame')."
|
|||
"Make a frame on X display DISPLAY.
|
||||
The optional second argument PARAMETERS specifies additional frame parameters."
|
||||
(interactive "sMake frame on display: ")
|
||||
(or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display)
|
||||
(error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
|
||||
(when (and (boundp 'x-initialized) (not x-initialized))
|
||||
(setq x-display-name display)
|
||||
(x-initialize-window-system))
|
||||
(make-frame `((window-system . x) (display . ,display) . ,parameters)))
|
||||
(if (featurep 'ns-windowing)
|
||||
(progn
|
||||
(when (and (boundp 'ns-initialized) (not ns-initialized))
|
||||
(setq ns-display-name display)
|
||||
(ns-initialize-window-system))
|
||||
(make-frame `((window-system . ns) (display . ,display) . ,parameters)))
|
||||
(progn
|
||||
(or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display)
|
||||
(error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
|
||||
(when (and (boundp 'x-initialized) (not x-initialized))
|
||||
(setq x-display-name display)
|
||||
(x-initialize-window-system))
|
||||
(make-frame `((window-system . x) (display . ,display) . ,parameters)))))
|
||||
|
||||
(defun make-frame-on-tty (tty type &optional parameters)
|
||||
"Make a frame on terminal device TTY.
|
||||
|
@ -835,7 +842,7 @@ the user during startup."
|
|||
(select-frame frame)
|
||||
(raise-frame frame)
|
||||
;; Ensure, if possible, that frame gets input focus.
|
||||
(when (memq (window-system frame) '(x mac w32))
|
||||
(when (memq (window-system frame) '(x mac w32 ns))
|
||||
(x-focus-frame frame))
|
||||
(when focus-follows-mouse
|
||||
(set-mouse-position (selected-frame) (1- (frame-width)) 0)))
|
||||
|
@ -880,7 +887,7 @@ Calls `suspend-emacs' if invoked from the controlling tty device,
|
|||
(interactive)
|
||||
(let ((type (framep (selected-frame))))
|
||||
(cond
|
||||
((memq type '(x w32)) (iconify-or-deiconify-frame))
|
||||
((memq type '(x ns w32)) (iconify-or-deiconify-frame))
|
||||
((eq type t)
|
||||
(if (controlling-tty-p)
|
||||
(suspend-emacs)
|
||||
|
@ -920,7 +927,7 @@ If there is no frame by that name, signal an error."
|
|||
(raise-frame frame)
|
||||
(select-frame frame)
|
||||
;; Ensure, if possible, that frame gets input focus.
|
||||
(cond ((memq (window-system frame) '(x w32))
|
||||
(cond ((memq (window-system frame) '(x w32 ns))
|
||||
(x-focus-frame frame)))
|
||||
(when focus-follows-mouse
|
||||
(set-mouse-position frame (1- (frame-width frame)) 0))))
|
||||
|
@ -1157,8 +1164,8 @@ frame's display)."
|
|||
((eq system-type 'windows-nt)
|
||||
(with-no-warnings
|
||||
(> w32-num-mouse-buttons 0)))
|
||||
((memq frame-type '(x mac))
|
||||
t) ;; We assume X and Mac *always* have a pointing device
|
||||
((memq frame-type '(x mac ns))
|
||||
t) ;; We assume X, Mac, NeXTstep *always* have a pointing device
|
||||
(t
|
||||
(or (and (featurep 'xt-mouse)
|
||||
xterm-mouse-mode)
|
||||
|
@ -1173,7 +1180,7 @@ frame's display).
|
|||
Support for popup menus requires that the mouse be available."
|
||||
(and
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(memq frame-type '(x w32 pc mac)))
|
||||
(memq frame-type '(x w32 pc mac ns)))
|
||||
(display-mouse-p display)))
|
||||
|
||||
(defun display-graphic-p (&optional display)
|
||||
|
@ -1183,7 +1190,7 @@ frames and several different fonts at once. This is true for displays
|
|||
that use a window system such as X, and false for text-only terminals.
|
||||
DISPLAY can be a display name, a frame, or nil (meaning the selected
|
||||
frame's display)."
|
||||
(not (null (memq (framep-on-display display) '(x w32 mac)))))
|
||||
(not (null (memq (framep-on-display display) '(x w32 mac ns)))))
|
||||
|
||||
(defun display-images-p (&optional display)
|
||||
"Return non-nil if DISPLAY can display images.
|
||||
|
@ -1211,7 +1218,7 @@ frame's display)."
|
|||
;; the Windows' DOS Box.
|
||||
(with-no-warnings
|
||||
(not (null dos-windows-version))))
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
t) ;; FIXME?
|
||||
(t
|
||||
nil))))
|
||||
|
@ -1222,7 +1229,7 @@ frame's display)."
|
|||
"Return the number of screens associated with DISPLAY."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-screens display))
|
||||
(t
|
||||
1))))
|
||||
|
@ -1234,7 +1241,7 @@ frame's display)."
|
|||
For character terminals, each character counts as a single pixel."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-pixel-height display))
|
||||
(t
|
||||
(frame-height (if (framep display) display (selected-frame)))))))
|
||||
|
@ -1246,7 +1253,7 @@ For character terminals, each character counts as a single pixel."
|
|||
For character terminals, each character counts as a single pixel."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-pixel-width display))
|
||||
(t
|
||||
(frame-width (if (framep display) display (selected-frame)))))))
|
||||
|
@ -1275,7 +1282,7 @@ displays not explicitely specified."
|
|||
"Return the height of DISPLAY's screen in millimeters.
|
||||
System values can be overridden by `display-mm-dimensions-alist'.
|
||||
If the information is unavailable, value is nil."
|
||||
(and (memq (framep-on-display display) '(x w32 mac))
|
||||
(and (memq (framep-on-display display) '(x w32 mac ns))
|
||||
(or (cddr (assoc (or display (frame-parameter nil 'display))
|
||||
display-mm-dimensions-alist))
|
||||
(cddr (assoc t display-mm-dimensions-alist))
|
||||
|
@ -1287,7 +1294,7 @@ If the information is unavailable, value is nil."
|
|||
"Return the width of DISPLAY's screen in millimeters.
|
||||
System values can be overridden by `display-mm-dimensions-alist'.
|
||||
If the information is unavailable, value is nil."
|
||||
(and (memq (framep-on-display display) '(x w32 mac))
|
||||
(and (memq (framep-on-display display) '(x w32 mac ns))
|
||||
(or (cadr (assoc (or display (frame-parameter nil 'display))
|
||||
display-mm-dimensions-alist))
|
||||
(cadr (assoc t display-mm-dimensions-alist))
|
||||
|
@ -1301,7 +1308,7 @@ The value may be `always', `when-mapped', `not-useful', or nil if
|
|||
the question is inapplicable to a certain kind of display."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-backing-store display))
|
||||
(t
|
||||
'not-useful))))
|
||||
|
@ -1312,7 +1319,7 @@ the question is inapplicable to a certain kind of display."
|
|||
"Return non-nil if DISPLAY's screen supports the SaveUnder feature."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-save-under display))
|
||||
(t
|
||||
'not-useful))))
|
||||
|
@ -1323,7 +1330,7 @@ the question is inapplicable to a certain kind of display."
|
|||
"Return the number of planes supported by DISPLAY."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-planes display))
|
||||
((eq frame-type 'pc)
|
||||
4)
|
||||
|
@ -1336,7 +1343,7 @@ the question is inapplicable to a certain kind of display."
|
|||
"Return the number of color cells supported by DISPLAY."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-color-cells display))
|
||||
((eq frame-type 'pc)
|
||||
16)
|
||||
|
@ -1351,7 +1358,7 @@ The value is one of the symbols `static-gray', `gray-scale',
|
|||
`static-color', `pseudo-color', `true-color', or `direct-color'."
|
||||
(let ((frame-type (framep-on-display display)))
|
||||
(cond
|
||||
((memq frame-type '(x w32 mac))
|
||||
((memq frame-type '(x w32 mac ns))
|
||||
(x-display-visual-class display))
|
||||
((and (memq frame-type '(pc t))
|
||||
(tty-display-color-p display))
|
||||
|
|
|
@ -1612,7 +1612,9 @@ CHOICE is a list of the choice char and help message at IDX."
|
|||
(cond ((memq window-system '(x mac))
|
||||
(x-focus-frame frame))
|
||||
((eq window-system 'w32)
|
||||
(w32-focus-frame frame)))
|
||||
(w32-focus-frame frame))
|
||||
((eq window-system 'ns)
|
||||
(ns-focus-frame frame)))
|
||||
(when focus-follows-mouse
|
||||
(set-mouse-position frame (1- (frame-width frame)) 0)))))
|
||||
|
||||
|
|
|
@ -3893,7 +3893,7 @@ the variable `Info-file-list-for-emacs'."
|
|||
;; This is a serious problem for trying to handle multiple
|
||||
;; frame types at once. We want this text to be invisible
|
||||
;; on frames that can display the font above.
|
||||
(when (memq (framep (selected-frame)) '(x pc w32 mac))
|
||||
(when (memq (framep (selected-frame)) '(x pc w32 mac ns))
|
||||
(add-text-properties (1- (match-beginning 2)) (match-end 2)
|
||||
'(invisible t front-sticky nil rear-nonsticky t)))))
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@
|
|||
t)
|
||||
(define-key-after set-coding-system-map [set-terminal-coding-system]
|
||||
'(menu-item "For Terminal" set-terminal-coding-system
|
||||
:enable (null (memq initial-window-system '(x w32 mac)))
|
||||
:enable (null (memq initial-window-system '(x w32 mac ns)))
|
||||
:help "How to encode terminal output")
|
||||
t)
|
||||
(define-key-after set-coding-system-map [separator-3]
|
||||
|
|
|
@ -212,6 +212,11 @@
|
|||
(if (featurep 'mac-carbon)
|
||||
(progn
|
||||
(load "term/mac-win")))
|
||||
(if (featurep 'ns-windowing)
|
||||
(progn
|
||||
(load "emacs-lisp/easymenu") ;; for platform-related menu adjustments
|
||||
(load "emacs-lisp/easy-mmode")
|
||||
(load "term/ns-win")))
|
||||
(if (fboundp 'atan) ; preload some constants and
|
||||
(progn ; floating pt. functions if we have float support.
|
||||
(load "emacs-lisp/float-sup")))
|
||||
|
|
|
@ -673,7 +673,7 @@ This should be bound to a mouse drag event."
|
|||
;; If mark is highlighted, no need to bounce the cursor.
|
||||
;; On X, we highlight while dragging, thus once again no need to bounce.
|
||||
(or transient-mark-mode
|
||||
(memq (framep (selected-frame)) '(x pc w32 mac))
|
||||
(memq (framep (selected-frame)) '(x pc w32 mac ns))
|
||||
(sit-for 1))
|
||||
(push-mark)
|
||||
(set-mark (point))
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
"22.1")
|
||||
(defcustom mouse-wheel-down-event
|
||||
;; In the latest versions of XEmacs, we could just use mouse-%s as well.
|
||||
(if (memq window-system '(w32 mac))
|
||||
(if (memq window-system '(w32 mac ns))
|
||||
'wheel-up
|
||||
(intern (format (if (featurep 'xemacs) "button%s" "mouse-%s")
|
||||
mouse-wheel-down-button)))
|
||||
|
@ -73,7 +73,7 @@
|
|||
"22.1")
|
||||
(defcustom mouse-wheel-up-event
|
||||
;; In the latest versions of XEmacs, we could just use mouse-%s as well.
|
||||
(if (memq window-system '(w32 mac))
|
||||
(if (memq window-system '(w32 mac ns))
|
||||
'wheel-down
|
||||
(intern (format (if (featurep 'xemacs) "button%s" "mouse-%s")
|
||||
mouse-wheel-up-button)))
|
||||
|
|
37
lisp/ns-carbon-compat.el
Normal file
37
lisp/ns-carbon-compat.el
Normal file
|
@ -0,0 +1,37 @@
|
|||
;;; ns-carbon-compat.el ---
|
||||
;;; Carbon compatibility layer for Mac users of NS (Cocoa) GUI.
|
||||
;;; Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
;;; Author: Adrian Robert
|
||||
;;; Keywords: Carbon, MacOSX
|
||||
|
||||
;;; This file is part of GNU Emacs.
|
||||
;;;
|
||||
;;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;;; any later version.
|
||||
;;;
|
||||
;;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Emacs; see the file COPYING. If not, write to
|
||||
;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; ns-carbon-compat.el: this file is loaded from termp/ns-win.el when
|
||||
;; run on a Mac OS X system. It sets up a number of aliases and other
|
||||
;; layers to enable human and machine users (Mac distributions of GNU Emacs)
|
||||
;; to pretend they are using the Choi/Mitsuharu Carbon port.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvaralias 'mac-allow-anti-aliasing 'ns-antialias-text)
|
||||
(defvaralias 'mac-command-modifier 'ns-command-modifier)
|
||||
(defvaralias 'mac-control-modifier 'ns-control-modifier)
|
||||
(defvaralias 'mac-option-modifier 'ns-option-modifier)
|
||||
(defvaralias 'mac-function-modifier 'ns-function-modifier)
|
67
lisp/ns-grabenv.el
Normal file
67
lisp/ns-grabenv.el
Normal file
|
@ -0,0 +1,67 @@
|
|||
;;; ns-grabenv.el --- functions to set environment variables by running a subshell
|
||||
;;; Copyright (C) 1993, 1994, 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
|
||||
;;; Author: Carl Edman, Christian Limpach, Scott Bender, Christophe de Dinechin,
|
||||
;;; Adrian Robert
|
||||
;;; Keywords: terminals
|
||||
|
||||
;;; This file is part of GNU Emacs.
|
||||
;;;
|
||||
;;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3, or (at your option)
|
||||
;;; any later version.
|
||||
;;;
|
||||
;;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Emacs; see the file COPYING. If not, write to
|
||||
;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Idea based on NS 4.2 distribution, this version of code based on
|
||||
;;; mac-read-environment-vars-from-shell () by David Reitter in Aquamacs dist..
|
||||
|
||||
|
||||
;; utility function
|
||||
(defun ns-make-command-string (cmdlist)
|
||||
(let ((str "")
|
||||
(cmds cmdlist))
|
||||
(while cmds
|
||||
(if (not (eq str "")) (setq str (format "%s ; " str)))
|
||||
(setq str (format "%s%s" str (car cmds)))
|
||||
(setq cmds (cdr cmds)))
|
||||
str))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun ns-grabenv (&optional shell-path &optional startup)
|
||||
"Run a shell subprocess, and interpret its output as a series of environment\n\
|
||||
variables to insert into the emacs environment. The first optional argument\n\
|
||||
gives the path to the shell (defaults to the current setting of\n\
|
||||
shell-file-name). The remaining arguments are interpreted as a list of\n\
|
||||
commands for it to execute (defaults to \"printenv\")."
|
||||
(interactive)
|
||||
(with-temp-buffer
|
||||
(let ((shell-file-name (if shell-path shell-path shell-file-name))
|
||||
(cmd (ns-make-command-string (if startup startup '("printenv")))))
|
||||
(shell-command cmd t)
|
||||
(while (search-forward-regexp "^\\([A-Za-z_0-9]+\\)=\\(.*\\)$" nil t)
|
||||
(setenv (match-string 1)
|
||||
(if (equal (match-string 1) "PATH")
|
||||
(concat (getenv "PATH") ":" (match-string 2))
|
||||
(match-string 2)))))))
|
||||
|
||||
(provide 'ns-grabenv)
|
||||
|
||||
;;; ns-grabenv.el ends here
|
||||
|
||||
; (autoload (quote ns-grabenv) "ns-grabenv" "\
|
||||
; Run a shell subprocess, and interpret its output as a series of environment
|
||||
; variables to insert into the emacs environment. The first optional argument
|
||||
; gives the path to the shell (defaults to the current setting of
|
||||
; shell-file-name). The remaining arguments are interpreted as a list of
|
||||
; commands for it to execute (defaults to \"printenv\")." nil nil)
|
|
@ -5984,7 +5984,7 @@ See also `normal-erase-is-backspace'."
|
|||
(set-terminal-parameter nil 'normal-erase-is-backspace
|
||||
(if enabled 1 0))
|
||||
|
||||
(cond ((or (memq window-system '(x w32 mac pc))
|
||||
(cond ((or (memq window-system '(x w32 mac ns pc))
|
||||
(memq system-type '(ms-dos windows-nt)))
|
||||
(let* ((bindings
|
||||
`(([C-delete] [C-backspace])
|
||||
|
|
|
@ -182,6 +182,72 @@ FRAME-PARAM (optional) is the frame parameter this option specifies,
|
|||
and VALUE is the value which is given to that frame parameter
|
||||
\(most options use the argument for this, so VALUE is not present).")
|
||||
|
||||
(defconst command-line-ns-option-alist
|
||||
'(("-NSAutoLaunch" 1 ns-ignore-1-arg)
|
||||
("-NXAutoLaunch" 1 ns-ignore-1-arg)
|
||||
("-macosx" 0 ns-ignore-0-arg)
|
||||
("-NSHost" 1 ns-ignore-1-arg)
|
||||
("-_NSMachLaunch" 1 ns-ignore-1-arg)
|
||||
("-MachLaunch" 1 ns-ignore-1-arg)
|
||||
("-NXOpen" 1 ns-ignore-1-arg)
|
||||
("-NSOpen" 1 ns-handle-nxopen)
|
||||
("-NXOpenTemp" 1 ns-ignore-1-arg)
|
||||
("-NSOpenTemp" 1 ns-handle-nxopentemp)
|
||||
("-GSFilePath" 1 ns-handle-nxopen)
|
||||
;;("-bw" . x-handle-numeric-switch)
|
||||
;;("-d" . x-handle-display)
|
||||
;;("-display" . x-handle-display)
|
||||
("-name" 1 ns-handle-name-switch)
|
||||
("-title" 1 ns-handle-switch title)
|
||||
("-T" 1 ns-handle-switch title)
|
||||
("-r" 0 ns-handle-switch reverse t)
|
||||
("-rv" 0 ns-handle-switch reverse t)
|
||||
("-reverse" 0 ns-handle-switch reverse t)
|
||||
("-fn" 1 ns-handle-switch font)
|
||||
("-font" 1 ns-handle-switch font)
|
||||
("-ib" 1 ns-handle-numeric-switch internal-border-width)
|
||||
;;("-g" . x-handle-geometry)
|
||||
;;("-geometry" . x-handle-geometry)
|
||||
("-fg" 1 ns-handle-switch foreground-color)
|
||||
("-foreground" 1 ns-handle-switch foreground-color)
|
||||
("-bg" 1 ns-handle-switch background-color)
|
||||
("-background" 1 ns-handle-switch background-color)
|
||||
; ("-ms" 1 ns-handle-switch mouse-color)
|
||||
("-itype" 0 ns-handle-switch icon-type t)
|
||||
("-i" 0 ns-handle-switch icon-type t)
|
||||
("-iconic" 0 ns-handle-iconic icon-type t)
|
||||
;;("-xrm" . x-handle-xrm-switch)
|
||||
("-cr" 1 ns-handle-switch cursor-color)
|
||||
("-vb" 0 ns-handle-switch vertical-scroll-bars t)
|
||||
("-hb" 0 ns-handle-switch horizontal-scroll-bars t)
|
||||
("-bd" 1 ns-handle-switch)
|
||||
;; ("--border-width" 1 ns-handle-numeric-switch border-width)
|
||||
;; ("--display" 1 ns-handle-display)
|
||||
("--name" 1 ns-handle-name-switch)
|
||||
("--title" 1 ns-handle-switch title)
|
||||
("--reverse-video" 0 ns-handle-switch reverse t)
|
||||
("--font" 1 ns-handle-switch font)
|
||||
("--internal-border" 1 ns-handle-numeric-switch internal-border-width)
|
||||
;; ("--geometry" 1 ns-handle-geometry)
|
||||
("--foreground-color" 1 ns-handle-switch foreground-color)
|
||||
("--background-color" 1 ns-handle-switch background-color)
|
||||
("--mouse-color" 1 ns-handle-switch mouse-color)
|
||||
("--icon-type" 0 ns-handle-switch icon-type t)
|
||||
("--iconic" 0 ns-handle-iconic)
|
||||
;; ("--xrm" 1 ns-handle-xrm-switch)
|
||||
("--cursor-color" 1 ns-handle-switch cursor-color)
|
||||
("--vertical-scroll-bars" 0 ns-handle-switch vertical-scroll-bars t)
|
||||
("--border-color" 1 ns-handle-switch border-width))
|
||||
"Alist of NS options.
|
||||
Each element has the form
|
||||
(NAME NUMARGS HANDLER FRAME-PARAM VALUE)
|
||||
where NAME is the option name string, NUMARGS is the number of arguments
|
||||
that the option accepts, HANDLER is a function to call to handle the option.
|
||||
FRAME-PARAM (optional) is the frame parameter this option specifies,
|
||||
and VALUE is the value which is given to that frame parameter
|
||||
\(most options use the argument for this, so VALUE is not present).")
|
||||
|
||||
|
||||
(defvar before-init-hook nil
|
||||
"Normal hook run after handling urgent options but before loading init files.")
|
||||
|
||||
|
@ -820,7 +886,7 @@ opening the first frame (e.g. open a connection to an X server).")
|
|||
;; only because all other settings of no-blinking-cursor are here.
|
||||
(unless (or noninteractive
|
||||
emacs-basic-display
|
||||
(and (memq window-system '(x w32 mac))
|
||||
(and (memq window-system '(x w32 mac ns))
|
||||
(not (member (x-get-resource "cursorBlink" "CursorBlink")
|
||||
'("off" "false")))))
|
||||
(setq no-blinking-cursor t))
|
||||
|
@ -2021,6 +2087,13 @@ A fancy display is used on graphic displays, normal otherwise."
|
|||
(if (string-match "^--" (car tem))
|
||||
(push (list (car tem)) longopts)))
|
||||
|
||||
;; Add the long NS options to longopts.
|
||||
(setq tem command-line-ns-option-alist)
|
||||
(while tem
|
||||
(if (string-match "^--" (car (car tem)))
|
||||
(setq longopts (cons (list (car (car tem))) longopts)))
|
||||
(setq tem (cdr tem)))
|
||||
|
||||
;; Loop, processing options.
|
||||
(while command-line-args-left
|
||||
(let* ((argi (car command-line-args-left))
|
||||
|
@ -2131,6 +2204,11 @@ A fancy display is used on graphic displays, normal otherwise."
|
|||
(setq command-line-args-left
|
||||
(nthcdr (nth 1 tem) command-line-args-left)))
|
||||
|
||||
((setq tem (assoc argi command-line-ns-option-alist))
|
||||
;; Ignore NS-windows options and their args if not using NS.
|
||||
(setq command-line-args-left
|
||||
(nthcdr (nth 1 tem) command-line-args-left)))
|
||||
|
||||
((member argi '("-find-file" "-file" "-visit"))
|
||||
(setq inhibit-startup-screen t)
|
||||
;; An explicit option to specify visiting a file.
|
||||
|
|
1608
lisp/term/ns-win.el
Normal file
1608
lisp/term/ns-win.el
Normal file
File diff suppressed because it is too large
Load diff
|
@ -65,6 +65,8 @@ to the system configuration; look at `system-configuration' instead."
|
|||
((featurep 'gtk)
|
||||
(concat ", GTK+ Version " gtk-version-string))
|
||||
((featurep 'x-toolkit) ", X toolkit")
|
||||
((featurep 'ns-windowing)
|
||||
(format ", *Step %s" ns-version-string))
|
||||
((boundp 'mac-carbon-version-string)
|
||||
(concat ", Carbon Version " mac-carbon-version-string))
|
||||
(t ""))
|
||||
|
|
|
@ -545,9 +545,11 @@ Change only via `Customization' or the function `add-hook'."
|
|||
|
||||
(defcustom woman-man.conf-path
|
||||
(let ((path '("/usr/lib" "/etc")))
|
||||
(if (eq system-type 'windows-nt)
|
||||
(mapcar 'woman-Cyg-to-Win path)
|
||||
path))
|
||||
(cond ((eq system-type 'windows-nt)
|
||||
(mapcar 'woman-Cyg-to-Win path))
|
||||
((eq system-type 'darwin)
|
||||
(cons "/usr/share/misc" path))
|
||||
(t path)))
|
||||
"List of dirs to search and/or files to try for man config file.
|
||||
A trailing separator (`/' for UNIX etc.) on directories is
|
||||
optional, and the filename is used if a directory specified is
|
||||
|
@ -860,7 +862,7 @@ Should begin with \\. and end with \\' and MUST NOT be optional."
|
|||
|
||||
(defcustom woman-use-own-frame ; window-system
|
||||
(or (and (fboundp 'display-graphic-p) (display-graphic-p)) ; Emacs 21
|
||||
(memq window-system '(x w32))) ; Emacs 20
|
||||
(memq window-system '(x w32 ns))) ; Emacs 20
|
||||
"If non-nil then use a dedicated frame for displaying WoMan windows.
|
||||
Only useful when run on a graphic display such as X or MS-Windows."
|
||||
:type 'boolean
|
||||
|
|
42
nextstep/AUTHORS
Normal file
42
nextstep/AUTHORS
Normal file
|
@ -0,0 +1,42 @@
|
|||
In addition to the folks listed in ../AUTHORS responsible for GNU Emacs itself,
|
||||
the NeXTstep port owes to the following people:
|
||||
|
||||
Carl Edman
|
||||
original author and maintainer, mainly UI
|
||||
Michael Brouwer
|
||||
heavy contributor, input handling and other areas
|
||||
Christian Limpach
|
||||
help / maintenance on NeXTstep
|
||||
Scott Bender
|
||||
OpenStep, Rhapsody ports
|
||||
Christophe de Dinechin
|
||||
MacOS X port
|
||||
Adrian Robert
|
||||
GNUstep port*, update Emacs 20 -> 21+
|
||||
|
||||
Joe Reiss
|
||||
popup menu, dialog boxes; icons
|
||||
Andrew Athan
|
||||
font panel integration
|
||||
Scott Byer
|
||||
improved rendering code
|
||||
Scott Hess
|
||||
keyboard handling suggestions
|
||||
|
||||
Rahul Abrol
|
||||
"hide others" patch
|
||||
Adam Ratcliffe
|
||||
preferences panel documentation
|
||||
Peter Dyballa
|
||||
assistance with non-ASCII rendering and keyboard handling
|
||||
David M. Cooke
|
||||
fix to XPM crash bug
|
||||
Carsten Bormann
|
||||
initial patch and assistance getting dired working for non-ASCII filenames
|
||||
Andrew Moore
|
||||
assistance on ns-mark-nav extension
|
||||
|
||||
(*)
|
||||
The GNUstep port was made possible through the assistance of Adam Fedor, Fred
|
||||
Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas Matton, and Riccardo
|
||||
Mottola.
|
46
nextstep/ChangeLog
Normal file
46
nextstep/ChangeLog
Normal file
|
@ -0,0 +1,46 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
New directory with support files to support NeXTstep window system.
|
||||
|
||||
* AUTHORS: New file: contributor information for NS port.
|
||||
* ChangeLog.nextstep: New file: changelog info to be added to
|
||||
various directories on merge.
|
||||
* ChangeLog: New file: recent history of the NS port itself.
|
||||
* Cocoa: New directory: support files for building .app
|
||||
package on OS X systems.
|
||||
* Cocoa/Emacs.base
|
||||
* Cocoa/Emacs.base/Contents: New directories.
|
||||
* Cocoa/Emacs.base/Contents/Info.plist
|
||||
* Cocoa/Emacs.base/Contents/PkgInfo: New files.
|
||||
* Cocoa/Emacs.base/Contents/Resources: New directory.
|
||||
* Cocoa/Emacs.base/Contents/Resources/Credits.html: New file:
|
||||
About popup support.
|
||||
* Cocoa/Emacs.base/Contents/Resources/Emacs.icns: New file:
|
||||
copied from Carbon port.
|
||||
* Cocoa/Emacs.base/Contents/Resources/English.lproj: New
|
||||
directory.
|
||||
* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
|
||||
New file.
|
||||
* Cocoa/Emacs.base/Contents/Resources/preferences.nib: New
|
||||
directory.
|
||||
* Cocoa/Emacs.base/Contents/Resources/preferences.nib/classes.nib
|
||||
* Cocoa/Emacs.base/Contents/Resources/preferences.nib/info.nib
|
||||
* Cocoa/Emacs.base/Contents/Resources/preferences.nib/keyedobjects.nib:
|
||||
New files.
|
||||
* Cocoa/Emacs.xcodeproj: New directory: build support.
|
||||
* Cocoa/Emacs.xcodeproj/project.pbxproj: New file.
|
||||
* GNUstep: New directory: support files for building .app
|
||||
package on GNUstep systems.
|
||||
* GNUstep/Resources: New directory.
|
||||
* GNUstep/Resources/Emacs.desktop
|
||||
* GNUstep/Resources/Info-gnustep.plist
|
||||
* GNUstep/Resources/emacs.tiff: New files.
|
||||
* GNUstep/Resources/preferences.gorm: New directory.
|
||||
* GNUstep/Resources/preferences.gorm/data.classes
|
||||
* GNUstep/Resources/preferences.gorm/data.info
|
||||
* GNUstep/Resources/preferences.gorm/objects.gorm: New
|
||||
files.
|
||||
* compile: New file: utility script for building Emacs.app.
|
||||
* FOR_RELEASE: New file: release tasks specific to NeXTstep
|
||||
port.
|
||||
* README.txt: New file: descriptive info for NeXTstep port.
|
212
nextstep/Cocoa/Emacs.base/Contents/Info.plist
Normal file
212
nextstep/Cocoa/Emacs.base/Contents/Info.plist
Normal file
|
@ -0,0 +1,212 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>txt</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Text</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>c</string>
|
||||
<string>h</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>C</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>C</string>
|
||||
<string>H</string>
|
||||
<string>cpp</string>
|
||||
<string>cc</string>
|
||||
<string>hh</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>C++</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>m</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Objective C</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>el</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Lisp</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>xml</string>
|
||||
<string>xhtml</string>
|
||||
<string>xsl</string>
|
||||
<string>xsd</string>
|
||||
<string>xsdl</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>XML</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>java</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Java</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>tex</string>
|
||||
<string>ltx</string>
|
||||
<string>bib</string>
|
||||
<string>bbl</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>TeX/LaTeX</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Any</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>****</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
<key>NSServices</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSMenuItem</key>
|
||||
<dict>
|
||||
<key>default</key>
|
||||
<string>Emacs.app/New Buffer Containing Selection</string>
|
||||
</dict>
|
||||
<key>NSMessage</key>
|
||||
<string>requestService</string>
|
||||
<key>NSUserData</key>
|
||||
<string>open-selection</string>
|
||||
<key>NSPortName</key>
|
||||
<string>Emacs</string>
|
||||
<key>NSSendTypes</key>
|
||||
<array>
|
||||
<string>NSStringPboardType</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSMenuItem</key>
|
||||
<dict>
|
||||
<key>default</key>
|
||||
<string>Emacs.app/Open Selected File</string>
|
||||
</dict>
|
||||
<key>NSMessage</key>
|
||||
<string>requestService</string>
|
||||
<key>NSUserData</key>
|
||||
<string>open-file</string>
|
||||
<key>NSPortName</key>
|
||||
<string>Emacs</string>
|
||||
<key>NSSendTypes</key>
|
||||
<array>
|
||||
<string>NSStringPboardType</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSMenuItem</key>
|
||||
<dict>
|
||||
<key>default</key>
|
||||
<string>Emacs.app/Email Selection</string>
|
||||
</dict>
|
||||
<key>NSMessage</key>
|
||||
<string>requestService</string>
|
||||
<key>NSUserData</key>
|
||||
<string>mail-selection</string>
|
||||
<key>NSPortName</key>
|
||||
<string>Emacs</string>
|
||||
<key>NSSendTypes</key>
|
||||
<array>
|
||||
<string>NSStringPboardType</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSMenuItem</key>
|
||||
<dict>
|
||||
<key>default</key>
|
||||
<string>Emacs.app/Send Email to Selected Address</string>
|
||||
</dict>
|
||||
<key>NSMessage</key>
|
||||
<string>requestService</string>
|
||||
<key>NSUserData</key>
|
||||
<string>mail-to</string>
|
||||
<key>NSPortName</key>
|
||||
<string>Emacs</string>
|
||||
<key>NSSendTypes</key>
|
||||
<array>
|
||||
<string>NSStringPboardType</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Emacs</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>Emacs 23.0.60 (C) Free Software Foundation</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Emacs</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>Emacs</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Emacs</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>Version 23.0.60</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Emcs</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>NS 9.0</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>EmacsApp</string>
|
||||
</dict>
|
||||
</plist>
|
1
nextstep/Cocoa/Emacs.base/Contents/PkgInfo
Normal file
1
nextstep/Cocoa/Emacs.base/Contents/PkgInfo
Normal file
|
@ -0,0 +1 @@
|
|||
APPLEmcs
|
|
@ -0,0 +1 @@
|
|||
<font face="lucida grande" size="-1"><a href="http://emacs-app.sf.net">http://emacs-app.sf.net</a></font>
|
BIN
nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns
Normal file
BIN
nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns
Normal file
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
|
||||
CFBundleName = "Emacs";
|
||||
CFBundleShortVersionString = "Version 23.0.60";
|
||||
CFBundleGetInfoString = "Emacs version 23.0.60, GNUstep / MacOS X Cocoa version 9.0";
|
||||
NSHumanReadableCopyright = "Copyright 2008 Free Software Foundation.";
|
32
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/classes.nib
generated
Normal file
32
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/classes.nib
generated
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
IBClasses = (
|
||||
{
|
||||
ACTIONS = {
|
||||
cancel = id;
|
||||
ok = id;
|
||||
resetToDefaults = id;
|
||||
runHelp = id;
|
||||
setColors = id;
|
||||
setDefaultFont = id;
|
||||
};
|
||||
CLASS = EmacsPrefsController;
|
||||
LANGUAGE = ObjC;
|
||||
OUTLETS = {
|
||||
alternateModMenu = NSPopUpButton;
|
||||
commandModMenu = NSPopUpButton;
|
||||
controlModMenu = NSPopUpButton;
|
||||
cursorBlinkSlider = NSSlider;
|
||||
cursorTypeMatrix = NSMatrix;
|
||||
expandSpaceSlider = NSSlider;
|
||||
functionModMenu = NSPopUpButton;
|
||||
prefsWindow = NSWindow;
|
||||
smoothFontsCheck = NSButton;
|
||||
useQuickdrawCheck = NSButton;
|
||||
useSysHiliteCheck = NSButton;
|
||||
};
|
||||
SUPERCLASS = NSObject;
|
||||
},
|
||||
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
|
||||
);
|
||||
IBVersion = 1;
|
||||
}
|
46
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/info.nib
generated
Normal file
46
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/info.nib
generated
Normal file
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>196 42 356 240 0 0 1440 878 </string>
|
||||
<key>IBFramework Version</key>
|
||||
<string>446.1</string>
|
||||
<key>IBGroupedObjects</key>
|
||||
<dict>
|
||||
<key>5</key>
|
||||
<array>
|
||||
<string>114</string>
|
||||
<string>110</string>
|
||||
<string>111</string>
|
||||
<string>112</string>
|
||||
<string>113</string>
|
||||
</array>
|
||||
<key>6</key>
|
||||
<array>
|
||||
<string>183</string>
|
||||
<string>176</string>
|
||||
</array>
|
||||
<key>7</key>
|
||||
<array>
|
||||
<string>191</string>
|
||||
<string>184</string>
|
||||
</array>
|
||||
<key>9</key>
|
||||
<array>
|
||||
<string>201</string>
|
||||
<string>194</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>IBLastGroupID</key>
|
||||
<string>10</string>
|
||||
<key>IBOldestOS</key>
|
||||
<integer>3</integer>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>5</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8R2232</string>
|
||||
</dict>
|
||||
</plist>
|
BIN
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/keyedobjects.nib
generated
Normal file
BIN
nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib/keyedobjects.nib
generated
Normal file
Binary file not shown.
848
nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
Normal file
848
nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,848 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3C15C0EB0902D89500A8542F /* termhooks.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C02F0902D89500A8542F /* termhooks.h */; };
|
||||
3C15C0EC0902D89500A8542F /* termchar.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0300902D89500A8542F /* termchar.h */; };
|
||||
3C15C0EF0902D89500A8542F /* syswait.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0330902D89500A8542F /* syswait.h */; };
|
||||
3C15C0F00902D89500A8542F /* systty.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0340902D89500A8542F /* systty.h */; };
|
||||
3C15C0F10902D89500A8542F /* systime.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0350902D89500A8542F /* systime.h */; };
|
||||
3C15C0F20902D89500A8542F /* syssignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0360902D89500A8542F /* syssignal.h */; };
|
||||
3C15C0F30902D89500A8542F /* sysselect.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0370902D89500A8542F /* sysselect.h */; };
|
||||
3C15C0F50902D89500A8542F /* syntax.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0390902D89500A8542F /* syntax.h */; };
|
||||
3C15C0FD0902D89500A8542F /* region-cache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0410902D89500A8542F /* region-cache.h */; };
|
||||
3C15C0FF0902D89500A8542F /* regex.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0430902D89500A8542F /* regex.h */; };
|
||||
3C15C1020902D89500A8542F /* puresize.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0460902D89500A8542F /* puresize.h */; };
|
||||
3C15C1030902D89500A8542F /* process.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0470902D89500A8542F /* process.h */; };
|
||||
3C15C1080902D89500A8542F /* point.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C04C0902D89500A8542F /* point.h */; };
|
||||
3C15C1090902D89500A8542F /* param.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C04D0902D89500A8542F /* param.h */; };
|
||||
3C15C10B0902D89500A8542F /* nsgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C04F0902D89500A8542F /* nsgui.h */; };
|
||||
3C15C10C0902D89500A8542F /* ndir.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0500902D89500A8542F /* ndir.h */; };
|
||||
3C15C1110902D89500A8542F /* mem-limits.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0550902D89500A8542F /* mem-limits.h */; };
|
||||
3C15C1120902D89500A8542F /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0560902D89500A8542F /* md5.h */; };
|
||||
3C15C1190902D89500A8542F /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C05D0902D89500A8542F /* macros.h */; };
|
||||
3C15C1220902D89500A8542F /* keymap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0660902D89500A8542F /* keymap.h */; };
|
||||
3C15C1240902D89500A8542F /* keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0680902D89500A8542F /* keyboard.h */; };
|
||||
3C15C1270902D89500A8542F /* intervals.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C06B0902D89500A8542F /* intervals.h */; };
|
||||
3C15C12A0902D89500A8542F /* indent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C06E0902D89500A8542F /* indent.h */; };
|
||||
3C15C1320902D89500A8542F /* category.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0760902D89500A8542F /* category.h */; };
|
||||
3C15C1330902D89500A8542F /* coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0770902D89500A8542F /* coding.h */; };
|
||||
3C15C1340902D89500A8542F /* buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0780902D89500A8542F /* buffer.h */; };
|
||||
3C15C1350902D89500A8542F /* vlimit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0790902D89500A8542F /* vlimit.h */; };
|
||||
3C15C1450902D89500A8542F /* cm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0890902D89500A8542F /* cm.h */; };
|
||||
3C15C14E0902D89500A8542F /* uaf.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0920902D89500A8542F /* uaf.h */; };
|
||||
3C15C1510902D89500A8542F /* termopts.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0950902D89500A8542F /* termopts.h */; };
|
||||
3C15C15C0902D89500A8542F /* window.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0A00902D89500A8542F /* window.h */; };
|
||||
3C15C1720902D89500A8542F /* gnu.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0B60902D89500A8542F /* gnu.h */; };
|
||||
3C15C1740902D89500A8542F /* getpagesize.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0B80902D89500A8542F /* getpagesize.h */; };
|
||||
3C15C17B0902D89500A8542F /* disptab.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0BF0902D89500A8542F /* disptab.h */; };
|
||||
3C15C17E0902D89500A8542F /* epaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0C20902D89500A8542F /* epaths.h */; };
|
||||
3C15C1810902D89500A8542F /* ccl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0C50902D89500A8542F /* ccl.h */; };
|
||||
3C15C1830902D89500A8542F /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0C70902D89500A8542F /* composite.h */; };
|
||||
3C15C1840902D89500A8542F /* charset.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0C80902D89500A8542F /* charset.h */; };
|
||||
3C15C1850902D89500A8542F /* fontset.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0C90902D89500A8542F /* fontset.h */; };
|
||||
3C15C1930902D89500A8542F /* commands.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0D70902D89500A8542F /* commands.h */; };
|
||||
3C15C1950902D89500A8542F /* dispextern.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0D90902D89500A8542F /* dispextern.h */; };
|
||||
3C15C1970902D89500A8542F /* acldef.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0DB0902D89500A8542F /* acldef.h */; };
|
||||
3C15C19A0902D89500A8542F /* character.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0DE0902D89500A8542F /* character.h */; };
|
||||
3C15C19E0902D89500A8542F /* chpdef.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0E20902D89500A8542F /* chpdef.h */; };
|
||||
3C15C1A00902D89500A8542F /* frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0E40902D89500A8542F /* frame.h */; };
|
||||
3C15C1A20902D89500A8542F /* atimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0E60902D89500A8542F /* atimer.h */; };
|
||||
3C15C1A30902D89500A8542F /* blockinput.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C15C0E70902D89500A8542F /* blockinput.h */; };
|
||||
3C15C1A80902D97100A8542F /* nsimage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C15C1A70902D97100A8542F /* nsimage.m */; };
|
||||
3C4D6D6B0DE50D2300B20D4E /* font.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D660DE50D2300B20D4E /* font.c */; };
|
||||
3C4D6D6C0DE50D2300B20D4E /* font.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C4D6D670DE50D2300B20D4E /* font.h */; };
|
||||
3C4D6D6D0DE50D2300B20D4E /* termcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D680DE50D2300B20D4E /* termcap.c */; };
|
||||
3C4D6D6E0DE50D2300B20D4E /* terminal.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D690DE50D2300B20D4E /* terminal.c */; };
|
||||
3C4D6D6F0DE50D2300B20D4E /* tparam.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D6A0DE50D2300B20D4E /* tparam.c */; };
|
||||
3C4D6D730DE50D5D00B20D4E /* nsfont.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D710DE50D5D00B20D4E /* nsfont.m */; };
|
||||
3C7F3C3B07EB3B05003C8A4D /* nsterm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C7F3C3A07EB3B05003C8A4D /* nsterm.h */; };
|
||||
3CB8E29A0E2CE6BF003F3104 /* preferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8E2990E2CE6BF003F3104 /* preferences.nib */; };
|
||||
3CB8E29E0E2CE73A003F3104 /* Emacs.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8E29D0E2CE73A003F3104 /* Emacs.icns */; };
|
||||
3CB8E2A00E2CE7F5003F3104 /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8E29F0E2CE7F5003F3104 /* Credits.html */; };
|
||||
3CB8E2A70E2CE856003F3104 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */; };
|
||||
3CC5430607E2315800C271A9 /* nsfns.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF67E00C61DCD7F000001 /* nsfns.m */; };
|
||||
3CC5430707E2315800C271A9 /* nsmenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68000C61DCD7F000001 /* nsmenu.m */; };
|
||||
3CC5430807E2315800C271A9 /* nsselect.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68100C61DCD7F000001 /* nsselect.m */; };
|
||||
3CC5430907E2315800C271A9 /* nsterm.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68300C61DCD7F000001 /* nsterm.m */; };
|
||||
3CDCED340902E99700B2EF7E /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CDCED330902E99700B2EF7E /* config.h */; };
|
||||
3CDCEDD00902EA8200B2EF7E /* term.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED550902EA8100B2EF7E /* term.c */; };
|
||||
3CDCEDD10902EA8200B2EF7E /* sysdep.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED560902EA8100B2EF7E /* sysdep.c */; };
|
||||
3CDCEDD20902EA8200B2EF7E /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED570902EA8100B2EF7E /* syntax.c */; };
|
||||
3CDCEDD40902EA8200B2EF7E /* strftime.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED590902EA8100B2EF7E /* strftime.c */; };
|
||||
3CDCEDD50902EA8200B2EF7E /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5A0902EA8100B2EF7E /* sound.c */; };
|
||||
3CDCEDD70902EA8200B2EF7E /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5C0902EA8100B2EF7E /* search.c */; };
|
||||
3CDCEDD80902EA8200B2EF7E /* scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5D0902EA8100B2EF7E /* scroll.c */; };
|
||||
3CDCEDD90902EA8200B2EF7E /* region-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5E0902EA8100B2EF7E /* region-cache.c */; };
|
||||
3CDCEDDA0902EA8200B2EF7E /* regex.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5F0902EA8100B2EF7E /* regex.c */; };
|
||||
3CDCEDDC0902EA8200B2EF7E /* process.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED610902EA8100B2EF7E /* process.c */; };
|
||||
3CDCEDDD0902EA8200B2EF7E /* print.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED620902EA8100B2EF7E /* print.c */; };
|
||||
3CDCEDDF0902EA8200B2EF7E /* pre-crt0.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED640902EA8100B2EF7E /* pre-crt0.c */; };
|
||||
3CDCEDE20902EA8200B2EF7E /* minibuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED670902EA8100B2EF7E /* minibuf.c */; };
|
||||
3CDCEDE30902EA8200B2EF7E /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED680902EA8100B2EF7E /* md5.c */; };
|
||||
3CDCEDE40902EA8200B2EF7E /* marker.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED690902EA8100B2EF7E /* marker.c */; };
|
||||
3CDCEDE80902EA8200B2EF7E /* macros.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED6D0902EA8100B2EF7E /* macros.c */; };
|
||||
3CDCEDEC0902EA8200B2EF7E /* lread.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED710902EA8100B2EF7E /* lread.c */; };
|
||||
3CDCEDED0902EA8200B2EF7E /* lastfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED720902EA8100B2EF7E /* lastfile.c */; };
|
||||
3CDCEDEE0902EA8200B2EF7E /* keymap.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED730902EA8100B2EF7E /* keymap.c */; };
|
||||
3CDCEDEF0902EA8200B2EF7E /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED740902EA8200B2EF7E /* keyboard.c */; };
|
||||
3CDCEDF00902EA8200B2EF7E /* intervals.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED750902EA8200B2EF7E /* intervals.c */; };
|
||||
3CDCEDF10902EA8200B2EF7E /* insdel.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED760902EA8200B2EF7E /* insdel.c */; };
|
||||
3CDCEDF20902EA8200B2EF7E /* indent.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED770902EA8200B2EF7E /* indent.c */; };
|
||||
3CDCEDF30902EA8200B2EF7E /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED780902EA8200B2EF7E /* image.c */; };
|
||||
3CDCEDF50902EA8200B2EF7E /* cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7A0902EA8200B2EF7E /* cmds.c */; };
|
||||
3CDCEDF60902EA8200B2EF7E /* category.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7B0902EA8200B2EF7E /* category.c */; };
|
||||
3CDCEDF70902EA8200B2EF7E /* coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7C0902EA8200B2EF7E /* coding.c */; };
|
||||
3CDCEDFE0902EA8200B2EF7E /* unexmacosx.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED830902EA8200B2EF7E /* unexmacosx.c */; };
|
||||
3CDCEE060902EA8200B2EF7E /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8B0902EA8200B2EF7E /* buffer.c */; };
|
||||
3CDCEE070902EA8200B2EF7E /* character.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8C0902EA8200B2EF7E /* character.c */; };
|
||||
3CDCEE0D0902EA8200B2EF7E /* undo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED920902EA8200B2EF7E /* undo.c */; };
|
||||
3CDCEE0F0902EA8200B2EF7E /* textprop.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED940902EA8200B2EF7E /* textprop.c */; };
|
||||
3CDCEE100902EA8200B2EF7E /* terminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED950902EA8200B2EF7E /* terminfo.c */; };
|
||||
3CDCEE170902EA8200B2EF7E /* xfaces.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9C0902EA8200B2EF7E /* xfaces.c */; };
|
||||
3CDCEE180902EA8200B2EF7E /* xdisp.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9D0902EA8200B2EF7E /* xdisp.c */; };
|
||||
3CDCEE190902EA8200B2EF7E /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9E0902EA8200B2EF7E /* window.c */; };
|
||||
3CDCEE2B0902EA8200B2EF7E /* doprnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB00902EA8200B2EF7E /* doprnt.c */; };
|
||||
3CDCEE2C0902EA8200B2EF7E /* doc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB10902EA8200B2EF7E /* doc.c */; };
|
||||
3CDCEE2D0902EA8200B2EF7E /* dired.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB20902EA8200B2EF7E /* dired.c */; };
|
||||
3CDCEE2E0902EA8200B2EF7E /* data.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB30902EA8200B2EF7E /* data.c */; };
|
||||
3CDCEE2F0902EA8200B2EF7E /* callint.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB40902EA8200B2EF7E /* callint.c */; };
|
||||
3CDCEE310902EA8200B2EF7E /* ccl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB60902EA8200B2EF7E /* ccl.c */; };
|
||||
3CDCEE320902EA8200B2EF7E /* fontset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB70902EA8200B2EF7E /* fontset.c */; };
|
||||
3CDCEE330902EA8200B2EF7E /* fns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB80902EA8200B2EF7E /* fns.c */; };
|
||||
3CDCEE340902EA8200B2EF7E /* floatfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB90902EA8200B2EF7E /* floatfns.c */; };
|
||||
3CDCEE360902EA8200B2EF7E /* filemode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBB0902EA8200B2EF7E /* filemode.c */; };
|
||||
3CDCEE370902EA8200B2EF7E /* filelock.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBC0902EA8200B2EF7E /* filelock.c */; };
|
||||
3CDCEE380902EA8200B2EF7E /* emacs.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBD0902EA8200B2EF7E /* emacs.c */; };
|
||||
3CDCEE390902EA8200B2EF7E /* editfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBE0902EA8200B2EF7E /* editfns.c */; };
|
||||
3CDCEE3A0902EA8200B2EF7E /* fileio.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBF0902EA8200B2EF7E /* fileio.c */; };
|
||||
3CDCEE3B0902EA8200B2EF7E /* eval.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC00902EA8200B2EF7E /* eval.c */; };
|
||||
3CDCEE3C0902EA8200B2EF7E /* casetab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC10902EA8200B2EF7E /* casetab.c */; };
|
||||
3CDCEE3D0902EA8200B2EF7E /* composite.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC20902EA8200B2EF7E /* composite.c */; };
|
||||
3CDCEE3E0902EA8200B2EF7E /* dispnew.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC30902EA8200B2EF7E /* dispnew.c */; };
|
||||
3CDCEE3F0902EA8200B2EF7E /* charset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC40902EA8200B2EF7E /* charset.c */; };
|
||||
3CDCEE400902EA8200B2EF7E /* alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC50902EA8200B2EF7E /* alloc.c */; };
|
||||
3CDCEE410902EA8200B2EF7E /* bytecode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC60902EA8200B2EF7E /* bytecode.c */; };
|
||||
3CDCEE420902EA8200B2EF7E /* callproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC70902EA8200B2EF7E /* callproc.c */; };
|
||||
3CDCEE430902EA8200B2EF7E /* cm.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC80902EA8200B2EF7E /* cm.c */; };
|
||||
3CDCEE440902EA8200B2EF7E /* casefiddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */; };
|
||||
3CDCEE450902EA8200B2EF7E /* fringe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCA0902EA8200B2EF7E /* fringe.c */; };
|
||||
3CDCEE460902EA8200B2EF7E /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCB0902EA8200B2EF7E /* frame.c */; };
|
||||
3CDCEE470902EA8200B2EF7E /* chartab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCC0902EA8200B2EF7E /* chartab.c */; };
|
||||
3CDCEE480902EA8200B2EF7E /* atimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCD0902EA8200B2EF7E /* atimer.c */; };
|
||||
3CFDFC3B08E79A6800B05918 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CFDFC3A08E79A6800B05918 /* AppKit.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
090AF67E00C61DCD7F000001 /* nsfns.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsfns.m; path = ../../src/nsfns.m; sourceTree = "<group>"; };
|
||||
090AF68000C61DCD7F000001 /* nsmenu.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsmenu.m; path = ../../src/nsmenu.m; sourceTree = "<group>"; };
|
||||
090AF68100C61DCD7F000001 /* nsselect.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsselect.m; path = ../../src/nsselect.m; sourceTree = "<group>"; };
|
||||
090AF68300C61DCD7F000001 /* nsterm.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsterm.m; path = ../../src/nsterm.m; sourceTree = "<group>"; };
|
||||
3C15C02F0902D89500A8542F /* termhooks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termhooks.h; path = ../../src/termhooks.h; sourceTree = "<group>"; };
|
||||
3C15C0300902D89500A8542F /* termchar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termchar.h; path = ../../src/termchar.h; sourceTree = "<group>"; };
|
||||
3C15C0330902D89500A8542F /* syswait.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syswait.h; path = ../../src/syswait.h; sourceTree = "<group>"; };
|
||||
3C15C0340902D89500A8542F /* systty.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systty.h; path = ../../src/systty.h; sourceTree = "<group>"; };
|
||||
3C15C0350902D89500A8542F /* systime.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systime.h; path = ../../src/systime.h; sourceTree = "<group>"; };
|
||||
3C15C0360902D89500A8542F /* syssignal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syssignal.h; path = ../../src/syssignal.h; sourceTree = "<group>"; };
|
||||
3C15C0370902D89500A8542F /* sysselect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sysselect.h; path = ../../src/sysselect.h; sourceTree = "<group>"; };
|
||||
3C15C0390902D89500A8542F /* syntax.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syntax.h; path = ../../src/syntax.h; sourceTree = "<group>"; };
|
||||
3C15C0410902D89500A8542F /* region-cache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "region-cache.h"; path = "../../src/region-cache.h"; sourceTree = "<group>"; };
|
||||
3C15C0430902D89500A8542F /* regex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = regex.h; path = ../../src/regex.h; sourceTree = "<group>"; };
|
||||
3C15C0460902D89500A8542F /* puresize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = puresize.h; path = ../../src/puresize.h; sourceTree = "<group>"; };
|
||||
3C15C0470902D89500A8542F /* process.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = process.h; path = ../../src/process.h; sourceTree = "<group>"; };
|
||||
3C15C04C0902D89500A8542F /* point.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = point.h; path = ../../src/point.h; sourceTree = "<group>"; };
|
||||
3C15C04D0902D89500A8542F /* param.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = param.h; path = ../../src/param.h; sourceTree = "<group>"; };
|
||||
3C15C04F0902D89500A8542F /* nsgui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsgui.h; path = ../../src/nsgui.h; sourceTree = "<group>"; };
|
||||
3C15C0500902D89500A8542F /* ndir.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ndir.h; path = ../../src/ndir.h; sourceTree = "<group>"; };
|
||||
3C15C0550902D89500A8542F /* mem-limits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "mem-limits.h"; path = "../../src/mem-limits.h"; sourceTree = "<group>"; };
|
||||
3C15C0560902D89500A8542F /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../src/md5.h; sourceTree = "<group>"; };
|
||||
3C15C05D0902D89500A8542F /* macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macros.h; path = ../../src/macros.h; sourceTree = "<group>"; };
|
||||
3C15C0660902D89500A8542F /* keymap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keymap.h; path = ../../src/keymap.h; sourceTree = "<group>"; };
|
||||
3C15C0680902D89500A8542F /* keyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keyboard.h; path = ../../src/keyboard.h; sourceTree = "<group>"; };
|
||||
3C15C06B0902D89500A8542F /* intervals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intervals.h; path = ../../src/intervals.h; sourceTree = "<group>"; };
|
||||
3C15C06E0902D89500A8542F /* indent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = indent.h; path = ../../src/indent.h; sourceTree = "<group>"; };
|
||||
3C15C0760902D89500A8542F /* category.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = category.h; path = ../../src/category.h; sourceTree = "<group>"; };
|
||||
3C15C0770902D89500A8542F /* coding.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../src/coding.h; sourceTree = "<group>"; };
|
||||
3C15C0780902D89500A8542F /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = buffer.h; path = ../../src/buffer.h; sourceTree = "<group>"; };
|
||||
3C15C0790902D89500A8542F /* vlimit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vlimit.h; path = ../../src/vlimit.h; sourceTree = "<group>"; };
|
||||
3C15C0890902D89500A8542F /* cm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cm.h; path = ../../src/cm.h; sourceTree = "<group>"; };
|
||||
3C15C0920902D89500A8542F /* uaf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = uaf.h; path = ../../src/uaf.h; sourceTree = "<group>"; };
|
||||
3C15C0950902D89500A8542F /* termopts.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termopts.h; path = ../../src/termopts.h; sourceTree = "<group>"; };
|
||||
3C15C0A00902D89500A8542F /* window.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = window.h; path = ../../src/window.h; sourceTree = "<group>"; };
|
||||
3C15C0B60902D89500A8542F /* gnu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = gnu.h; path = ../../src/gnu.h; sourceTree = "<group>"; };
|
||||
3C15C0B80902D89500A8542F /* getpagesize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = getpagesize.h; path = ../../src/getpagesize.h; sourceTree = "<group>"; };
|
||||
3C15C0BF0902D89500A8542F /* disptab.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = disptab.h; path = ../../src/disptab.h; sourceTree = "<group>"; };
|
||||
3C15C0C20902D89500A8542F /* epaths.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = epaths.h; path = ../../src/epaths.h; sourceTree = "<group>"; };
|
||||
3C15C0C50902D89500A8542F /* ccl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ccl.h; path = ../../src/ccl.h; sourceTree = "<group>"; };
|
||||
3C15C0C70902D89500A8542F /* composite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = composite.h; path = ../../src/composite.h; sourceTree = "<group>"; };
|
||||
3C15C0C80902D89500A8542F /* charset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = charset.h; path = ../../src/charset.h; sourceTree = "<group>"; };
|
||||
3C15C0C90902D89500A8542F /* fontset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fontset.h; path = ../../src/fontset.h; sourceTree = "<group>"; };
|
||||
3C15C0D70902D89500A8542F /* commands.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = commands.h; path = ../../src/commands.h; sourceTree = "<group>"; };
|
||||
3C15C0D90902D89500A8542F /* dispextern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dispextern.h; path = ../../src/dispextern.h; sourceTree = "<group>"; };
|
||||
3C15C0DB0902D89500A8542F /* acldef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = acldef.h; path = ../../src/acldef.h; sourceTree = "<group>"; };
|
||||
3C15C0DE0902D89500A8542F /* character.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = character.h; path = ../../src/character.h; sourceTree = "<group>"; };
|
||||
3C15C0E20902D89500A8542F /* chpdef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = chpdef.h; path = ../../src/chpdef.h; sourceTree = "<group>"; };
|
||||
3C15C0E40902D89500A8542F /* frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = frame.h; path = ../../src/frame.h; sourceTree = "<group>"; };
|
||||
3C15C0E60902D89500A8542F /* atimer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atimer.h; path = ../../src/atimer.h; sourceTree = "<group>"; };
|
||||
3C15C0E70902D89500A8542F /* blockinput.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = blockinput.h; path = ../../src/blockinput.h; sourceTree = "<group>"; };
|
||||
3C15C1A70902D97100A8542F /* nsimage.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsimage.m; path = ../../src/nsimage.m; sourceTree = "<group>"; };
|
||||
3C4D6D660DE50D2300B20D4E /* font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = font.c; path = ../../src/font.c; sourceTree = SOURCE_ROOT; };
|
||||
3C4D6D670DE50D2300B20D4E /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = font.h; path = ../../src/font.h; sourceTree = SOURCE_ROOT; };
|
||||
3C4D6D680DE50D2300B20D4E /* termcap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = termcap.c; path = ../../src/termcap.c; sourceTree = SOURCE_ROOT; };
|
||||
3C4D6D690DE50D2300B20D4E /* terminal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = terminal.c; path = ../../src/terminal.c; sourceTree = SOURCE_ROOT; };
|
||||
3C4D6D6A0DE50D2300B20D4E /* tparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tparam.c; path = ../../src/tparam.c; sourceTree = SOURCE_ROOT; };
|
||||
3C4D6D710DE50D5D00B20D4E /* nsfont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = nsfont.m; path = ../../src/nsfont.m; sourceTree = SOURCE_ROOT; };
|
||||
3C7F3C3A07EB3B05003C8A4D /* nsterm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsterm.h; path = ../../src/nsterm.h; sourceTree = "<group>"; };
|
||||
3CB8E2990E2CE6BF003F3104 /* preferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = preferences.nib; path = Emacs.base/Contents/Resources/preferences.nib; sourceTree = "<group>"; };
|
||||
3CB8E29D0E2CE73A003F3104 /* Emacs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Emacs.icns; path = Emacs.base/Contents/Resources/Emacs.icns; sourceTree = "<group>"; };
|
||||
3CB8E29F0E2CE7F5003F3104 /* Credits.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Credits.html; path = Emacs.base/Contents/Resources/Credits.html; sourceTree = "<group>"; };
|
||||
3CB8E2A60E2CE856003F3104 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; };
|
||||
3CC5434C07E2315800C271A9 /* Emacs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Emacs.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3CDCED330902E99700B2EF7E /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../../src/config.h; sourceTree = "<group>"; };
|
||||
3CDCED550902EA8100B2EF7E /* term.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = term.c; path = ../../src/term.c; sourceTree = "<group>"; };
|
||||
3CDCED560902EA8100B2EF7E /* sysdep.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sysdep.c; path = ../../src/sysdep.c; sourceTree = "<group>"; };
|
||||
3CDCED570902EA8100B2EF7E /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = ../../src/syntax.c; sourceTree = "<group>"; };
|
||||
3CDCED590902EA8100B2EF7E /* strftime.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = strftime.c; path = ../../src/strftime.c; sourceTree = "<group>"; };
|
||||
3CDCED5A0902EA8100B2EF7E /* sound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sound.c; path = ../../src/sound.c; sourceTree = "<group>"; };
|
||||
3CDCED5C0902EA8100B2EF7E /* search.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = search.c; path = ../../src/search.c; sourceTree = "<group>"; };
|
||||
3CDCED5D0902EA8100B2EF7E /* scroll.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scroll.c; path = ../../src/scroll.c; sourceTree = "<group>"; };
|
||||
3CDCED5E0902EA8100B2EF7E /* region-cache.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "region-cache.c"; path = "../../src/region-cache.c"; sourceTree = "<group>"; };
|
||||
3CDCED5F0902EA8100B2EF7E /* regex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = regex.c; path = ../../src/regex.c; sourceTree = "<group>"; };
|
||||
3CDCED610902EA8100B2EF7E /* process.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = process.c; path = ../../src/process.c; sourceTree = "<group>"; };
|
||||
3CDCED620902EA8100B2EF7E /* print.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = print.c; path = ../../src/print.c; sourceTree = "<group>"; };
|
||||
3CDCED640902EA8100B2EF7E /* pre-crt0.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "pre-crt0.c"; path = "../../src/pre-crt0.c"; sourceTree = "<group>"; };
|
||||
3CDCED670902EA8100B2EF7E /* minibuf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = minibuf.c; path = ../../src/minibuf.c; sourceTree = "<group>"; };
|
||||
3CDCED680902EA8100B2EF7E /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../src/md5.c; sourceTree = "<group>"; };
|
||||
3CDCED690902EA8100B2EF7E /* marker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = marker.c; path = ../../src/marker.c; sourceTree = "<group>"; };
|
||||
3CDCED6D0902EA8100B2EF7E /* macros.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = macros.c; path = ../../src/macros.c; sourceTree = "<group>"; };
|
||||
3CDCED710902EA8100B2EF7E /* lread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lread.c; path = ../../src/lread.c; sourceTree = "<group>"; };
|
||||
3CDCED720902EA8100B2EF7E /* lastfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lastfile.c; path = ../../src/lastfile.c; sourceTree = "<group>"; };
|
||||
3CDCED730902EA8100B2EF7E /* keymap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keymap.c; path = ../../src/keymap.c; sourceTree = "<group>"; };
|
||||
3CDCED740902EA8200B2EF7E /* keyboard.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keyboard.c; path = ../../src/keyboard.c; sourceTree = "<group>"; };
|
||||
3CDCED750902EA8200B2EF7E /* intervals.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = intervals.c; path = ../../src/intervals.c; sourceTree = "<group>"; };
|
||||
3CDCED760902EA8200B2EF7E /* insdel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = insdel.c; path = ../../src/insdel.c; sourceTree = "<group>"; };
|
||||
3CDCED770902EA8200B2EF7E /* indent.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = indent.c; path = ../../src/indent.c; sourceTree = "<group>"; };
|
||||
3CDCED780902EA8200B2EF7E /* image.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../../src/image.c; sourceTree = "<group>"; };
|
||||
3CDCED7A0902EA8200B2EF7E /* cmds.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cmds.c; path = ../../src/cmds.c; sourceTree = "<group>"; };
|
||||
3CDCED7B0902EA8200B2EF7E /* category.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = category.c; path = ../../src/category.c; sourceTree = "<group>"; };
|
||||
3CDCED7C0902EA8200B2EF7E /* coding.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coding.c; path = ../../src/coding.c; sourceTree = "<group>"; };
|
||||
3CDCED830902EA8200B2EF7E /* unexmacosx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = unexmacosx.c; path = ../../src/unexmacosx.c; sourceTree = "<group>"; };
|
||||
3CDCED8B0902EA8200B2EF7E /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = buffer.c; path = ../../src/buffer.c; sourceTree = "<group>"; };
|
||||
3CDCED8C0902EA8200B2EF7E /* character.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = character.c; path = ../../src/character.c; sourceTree = "<group>"; };
|
||||
3CDCED920902EA8200B2EF7E /* undo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = undo.c; path = ../../src/undo.c; sourceTree = "<group>"; };
|
||||
3CDCED940902EA8200B2EF7E /* textprop.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = textprop.c; path = ../../src/textprop.c; sourceTree = "<group>"; };
|
||||
3CDCED950902EA8200B2EF7E /* terminfo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = terminfo.c; path = ../../src/terminfo.c; sourceTree = "<group>"; };
|
||||
3CDCED9C0902EA8200B2EF7E /* xfaces.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xfaces.c; path = ../../src/xfaces.c; sourceTree = "<group>"; };
|
||||
3CDCED9D0902EA8200B2EF7E /* xdisp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xdisp.c; path = ../../src/xdisp.c; sourceTree = "<group>"; };
|
||||
3CDCED9E0902EA8200B2EF7E /* window.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = window.c; path = ../../src/window.c; sourceTree = "<group>"; };
|
||||
3CDCEDB00902EA8200B2EF7E /* doprnt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doprnt.c; path = ../../src/doprnt.c; sourceTree = "<group>"; };
|
||||
3CDCEDB10902EA8200B2EF7E /* doc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doc.c; path = ../../src/doc.c; sourceTree = "<group>"; };
|
||||
3CDCEDB20902EA8200B2EF7E /* dired.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dired.c; path = ../../src/dired.c; sourceTree = "<group>"; };
|
||||
3CDCEDB30902EA8200B2EF7E /* data.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = data.c; path = ../../src/data.c; sourceTree = "<group>"; };
|
||||
3CDCEDB40902EA8200B2EF7E /* callint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callint.c; path = ../../src/callint.c; sourceTree = "<group>"; };
|
||||
3CDCEDB60902EA8200B2EF7E /* ccl.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ccl.c; path = ../../src/ccl.c; sourceTree = "<group>"; };
|
||||
3CDCEDB70902EA8200B2EF7E /* fontset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fontset.c; path = ../../src/fontset.c; sourceTree = "<group>"; };
|
||||
3CDCEDB80902EA8200B2EF7E /* fns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fns.c; path = ../../src/fns.c; sourceTree = "<group>"; };
|
||||
3CDCEDB90902EA8200B2EF7E /* floatfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = floatfns.c; path = ../../src/floatfns.c; sourceTree = "<group>"; };
|
||||
3CDCEDBB0902EA8200B2EF7E /* filemode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filemode.c; path = ../../src/filemode.c; sourceTree = "<group>"; };
|
||||
3CDCEDBC0902EA8200B2EF7E /* filelock.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filelock.c; path = ../../src/filelock.c; sourceTree = "<group>"; };
|
||||
3CDCEDBD0902EA8200B2EF7E /* emacs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = emacs.c; path = ../../src/emacs.c; sourceTree = "<group>"; };
|
||||
3CDCEDBE0902EA8200B2EF7E /* editfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = editfns.c; path = ../../src/editfns.c; sourceTree = "<group>"; };
|
||||
3CDCEDBF0902EA8200B2EF7E /* fileio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fileio.c; path = ../../src/fileio.c; sourceTree = "<group>"; };
|
||||
3CDCEDC00902EA8200B2EF7E /* eval.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = eval.c; path = ../../src/eval.c; sourceTree = "<group>"; };
|
||||
3CDCEDC10902EA8200B2EF7E /* casetab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casetab.c; path = ../../src/casetab.c; sourceTree = "<group>"; };
|
||||
3CDCEDC20902EA8200B2EF7E /* composite.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = composite.c; path = ../../src/composite.c; sourceTree = "<group>"; };
|
||||
3CDCEDC30902EA8200B2EF7E /* dispnew.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dispnew.c; path = ../../src/dispnew.c; sourceTree = "<group>"; };
|
||||
3CDCEDC40902EA8200B2EF7E /* charset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = charset.c; path = ../../src/charset.c; sourceTree = "<group>"; };
|
||||
3CDCEDC50902EA8200B2EF7E /* alloc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = alloc.c; path = ../../src/alloc.c; sourceTree = "<group>"; };
|
||||
3CDCEDC60902EA8200B2EF7E /* bytecode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bytecode.c; path = ../../src/bytecode.c; sourceTree = "<group>"; };
|
||||
3CDCEDC70902EA8200B2EF7E /* callproc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callproc.c; path = ../../src/callproc.c; sourceTree = "<group>"; };
|
||||
3CDCEDC80902EA8200B2EF7E /* cm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cm.c; path = ../../src/cm.c; sourceTree = "<group>"; };
|
||||
3CDCEDC90902EA8200B2EF7E /* casefiddle.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casefiddle.c; path = ../../src/casefiddle.c; sourceTree = "<group>"; };
|
||||
3CDCEDCA0902EA8200B2EF7E /* fringe.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fringe.c; path = ../../src/fringe.c; sourceTree = "<group>"; };
|
||||
3CDCEDCB0902EA8200B2EF7E /* frame.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frame.c; path = ../../src/frame.c; sourceTree = "<group>"; };
|
||||
3CDCEDCC0902EA8200B2EF7E /* chartab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = chartab.c; path = ../../src/chartab.c; sourceTree = "<group>"; };
|
||||
3CDCEDCD0902EA8200B2EF7E /* atimer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = atimer.c; path = ../../src/atimer.c; sourceTree = "<group>"; };
|
||||
3CFDFC3A08E79A6800B05918 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3CC5434707E2315800C271A9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CFDFC3B08E79A6800B05918 /* AppKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CFDFC3A08E79A6800B05918 /* AppKit.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CC5434C07E2315800C271A9 /* Emacs.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
289FC26B00C69A287F000001 /* NeXTStep */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3C4D6D710DE50D5D00B20D4E /* nsfont.m */,
|
||||
3C15C1A70902D97100A8542F /* nsimage.m */,
|
||||
3C15C04F0902D89500A8542F /* nsgui.h */,
|
||||
3C7F3C3A07EB3B05003C8A4D /* nsterm.h */,
|
||||
090AF67E00C61DCD7F000001 /* nsfns.m */,
|
||||
090AF68000C61DCD7F000001 /* nsmenu.m */,
|
||||
090AF68100C61DCD7F000001 /* nsselect.m */,
|
||||
090AF68300C61DCD7F000001 /* nsterm.m */,
|
||||
);
|
||||
name = NeXTStep;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* Emacs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
289FC26B00C69A287F000001 /* NeXTStep */,
|
||||
3C15C23E0902E6B000A8542F /* emacs-hdr */,
|
||||
3CDCED4D0902EA6800B2EF7E /* emacs-src */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = Emacs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CB8E2A40E2CE856003F3104 /* English.lproj */,
|
||||
3CB8E29F0E2CE7F5003F3104 /* Credits.html */,
|
||||
3CB8E2990E2CE6BF003F3104 /* preferences.nib */,
|
||||
739637F200C4DF3C7F000001 /* Images */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3C15C23E0902E6B000A8542F /* emacs-hdr */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3C4D6D670DE50D2300B20D4E /* font.h */,
|
||||
3C15C0DB0902D89500A8542F /* acldef.h */,
|
||||
3C15C0E60902D89500A8542F /* atimer.h */,
|
||||
3C15C0E70902D89500A8542F /* blockinput.h */,
|
||||
3C15C0780902D89500A8542F /* buffer.h */,
|
||||
3C15C0760902D89500A8542F /* category.h */,
|
||||
3C15C0C50902D89500A8542F /* ccl.h */,
|
||||
3C15C0DE0902D89500A8542F /* character.h */,
|
||||
3C15C0C80902D89500A8542F /* charset.h */,
|
||||
3C15C0E20902D89500A8542F /* chpdef.h */,
|
||||
3C15C0890902D89500A8542F /* cm.h */,
|
||||
3CDCED330902E99700B2EF7E /* config.h */,
|
||||
3C15C0770902D89500A8542F /* coding.h */,
|
||||
3C15C0D70902D89500A8542F /* commands.h */,
|
||||
3C15C0C70902D89500A8542F /* composite.h */,
|
||||
3C15C0D90902D89500A8542F /* dispextern.h */,
|
||||
3C15C0BF0902D89500A8542F /* disptab.h */,
|
||||
3C15C0C20902D89500A8542F /* epaths.h */,
|
||||
3C15C0C90902D89500A8542F /* fontset.h */,
|
||||
3C15C0E40902D89500A8542F /* frame.h */,
|
||||
3C15C0B80902D89500A8542F /* getpagesize.h */,
|
||||
3C15C0B60902D89500A8542F /* gnu.h */,
|
||||
3C15C06E0902D89500A8542F /* indent.h */,
|
||||
3C15C06B0902D89500A8542F /* intervals.h */,
|
||||
3C15C0660902D89500A8542F /* keymap.h */,
|
||||
3C15C0680902D89500A8542F /* keyboard.h */,
|
||||
3C15C05D0902D89500A8542F /* macros.h */,
|
||||
3C15C0560902D89500A8542F /* md5.h */,
|
||||
3C15C0550902D89500A8542F /* mem-limits.h */,
|
||||
3C15C0500902D89500A8542F /* ndir.h */,
|
||||
3C15C04D0902D89500A8542F /* param.h */,
|
||||
3C15C04C0902D89500A8542F /* point.h */,
|
||||
3C15C0470902D89500A8542F /* process.h */,
|
||||
3C15C0460902D89500A8542F /* puresize.h */,
|
||||
3C15C0430902D89500A8542F /* regex.h */,
|
||||
3C15C0410902D89500A8542F /* region-cache.h */,
|
||||
3C15C0390902D89500A8542F /* syntax.h */,
|
||||
3C15C0370902D89500A8542F /* sysselect.h */,
|
||||
3C15C0330902D89500A8542F /* syswait.h */,
|
||||
3C15C0360902D89500A8542F /* syssignal.h */,
|
||||
3C15C0350902D89500A8542F /* systime.h */,
|
||||
3C15C0340902D89500A8542F /* systty.h */,
|
||||
3C15C0300902D89500A8542F /* termchar.h */,
|
||||
3C15C02F0902D89500A8542F /* termhooks.h */,
|
||||
3C15C0950902D89500A8542F /* termopts.h */,
|
||||
3C15C0920902D89500A8542F /* uaf.h */,
|
||||
3C15C0790902D89500A8542F /* vlimit.h */,
|
||||
3C15C0A00902D89500A8542F /* window.h */,
|
||||
);
|
||||
name = "emacs-hdr";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3CB8E2A40E2CE856003F3104 /* English.lproj */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */,
|
||||
);
|
||||
name = English.lproj;
|
||||
path = Emacs.base/Contents/Resources/English.lproj;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3CDCED4D0902EA6800B2EF7E /* emacs-src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3C4D6D660DE50D2300B20D4E /* font.c */,
|
||||
3C4D6D680DE50D2300B20D4E /* termcap.c */,
|
||||
3C4D6D690DE50D2300B20D4E /* terminal.c */,
|
||||
3C4D6D6A0DE50D2300B20D4E /* tparam.c */,
|
||||
3CDCED550902EA8100B2EF7E /* term.c */,
|
||||
3CDCED560902EA8100B2EF7E /* sysdep.c */,
|
||||
3CDCED570902EA8100B2EF7E /* syntax.c */,
|
||||
3CDCED590902EA8100B2EF7E /* strftime.c */,
|
||||
3CDCED5A0902EA8100B2EF7E /* sound.c */,
|
||||
3CDCED5C0902EA8100B2EF7E /* search.c */,
|
||||
3CDCED5D0902EA8100B2EF7E /* scroll.c */,
|
||||
3CDCED5E0902EA8100B2EF7E /* region-cache.c */,
|
||||
3CDCED5F0902EA8100B2EF7E /* regex.c */,
|
||||
3CDCED610902EA8100B2EF7E /* process.c */,
|
||||
3CDCED620902EA8100B2EF7E /* print.c */,
|
||||
3CDCED640902EA8100B2EF7E /* pre-crt0.c */,
|
||||
3CDCED670902EA8100B2EF7E /* minibuf.c */,
|
||||
3CDCED680902EA8100B2EF7E /* md5.c */,
|
||||
3CDCED690902EA8100B2EF7E /* marker.c */,
|
||||
3CDCED6D0902EA8100B2EF7E /* macros.c */,
|
||||
3CDCED710902EA8100B2EF7E /* lread.c */,
|
||||
3CDCED720902EA8100B2EF7E /* lastfile.c */,
|
||||
3CDCED730902EA8100B2EF7E /* keymap.c */,
|
||||
3CDCED740902EA8200B2EF7E /* keyboard.c */,
|
||||
3CDCED750902EA8200B2EF7E /* intervals.c */,
|
||||
3CDCED760902EA8200B2EF7E /* insdel.c */,
|
||||
3CDCED770902EA8200B2EF7E /* indent.c */,
|
||||
3CDCED780902EA8200B2EF7E /* image.c */,
|
||||
3CDCED7A0902EA8200B2EF7E /* cmds.c */,
|
||||
3CDCED7B0902EA8200B2EF7E /* category.c */,
|
||||
3CDCED7C0902EA8200B2EF7E /* coding.c */,
|
||||
3CDCED830902EA8200B2EF7E /* unexmacosx.c */,
|
||||
3CDCED8B0902EA8200B2EF7E /* buffer.c */,
|
||||
3CDCED8C0902EA8200B2EF7E /* character.c */,
|
||||
3CDCED920902EA8200B2EF7E /* undo.c */,
|
||||
3CDCED940902EA8200B2EF7E /* textprop.c */,
|
||||
3CDCED950902EA8200B2EF7E /* terminfo.c */,
|
||||
3CDCED9C0902EA8200B2EF7E /* xfaces.c */,
|
||||
3CDCED9D0902EA8200B2EF7E /* xdisp.c */,
|
||||
3CDCED9E0902EA8200B2EF7E /* window.c */,
|
||||
3CDCEDB00902EA8200B2EF7E /* doprnt.c */,
|
||||
3CDCEDB10902EA8200B2EF7E /* doc.c */,
|
||||
3CDCEDB20902EA8200B2EF7E /* dired.c */,
|
||||
3CDCEDB30902EA8200B2EF7E /* data.c */,
|
||||
3CDCEDB40902EA8200B2EF7E /* callint.c */,
|
||||
3CDCEDB60902EA8200B2EF7E /* ccl.c */,
|
||||
3CDCEDB70902EA8200B2EF7E /* fontset.c */,
|
||||
3CDCEDB80902EA8200B2EF7E /* fns.c */,
|
||||
3CDCEDB90902EA8200B2EF7E /* floatfns.c */,
|
||||
3CDCEDBB0902EA8200B2EF7E /* filemode.c */,
|
||||
3CDCEDBC0902EA8200B2EF7E /* filelock.c */,
|
||||
3CDCEDBD0902EA8200B2EF7E /* emacs.c */,
|
||||
3CDCEDBE0902EA8200B2EF7E /* editfns.c */,
|
||||
3CDCEDBF0902EA8200B2EF7E /* fileio.c */,
|
||||
3CDCEDC00902EA8200B2EF7E /* eval.c */,
|
||||
3CDCEDC10902EA8200B2EF7E /* casetab.c */,
|
||||
3CDCEDC20902EA8200B2EF7E /* composite.c */,
|
||||
3CDCEDC30902EA8200B2EF7E /* dispnew.c */,
|
||||
3CDCEDC40902EA8200B2EF7E /* charset.c */,
|
||||
3CDCEDC50902EA8200B2EF7E /* alloc.c */,
|
||||
3CDCEDC60902EA8200B2EF7E /* bytecode.c */,
|
||||
3CDCEDC70902EA8200B2EF7E /* callproc.c */,
|
||||
3CDCEDC80902EA8200B2EF7E /* cm.c */,
|
||||
3CDCEDC90902EA8200B2EF7E /* casefiddle.c */,
|
||||
3CDCEDCA0902EA8200B2EF7E /* fringe.c */,
|
||||
3CDCEDCB0902EA8200B2EF7E /* frame.c */,
|
||||
3CDCEDCC0902EA8200B2EF7E /* chartab.c */,
|
||||
3CDCEDCD0902EA8200B2EF7E /* atimer.c */,
|
||||
);
|
||||
name = "emacs-src";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
739637F200C4DF3C7F000001 /* Images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CB8E29D0E2CE73A003F3104 /* Emacs.icns */,
|
||||
);
|
||||
name = Images;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
3CC542FF07E2315800C271A9 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3C7F3C3B07EB3B05003C8A4D /* nsterm.h in Headers */,
|
||||
3C15C0EB0902D89500A8542F /* termhooks.h in Headers */,
|
||||
3C15C0EC0902D89500A8542F /* termchar.h in Headers */,
|
||||
3C15C0EF0902D89500A8542F /* syswait.h in Headers */,
|
||||
3C15C0F00902D89500A8542F /* systty.h in Headers */,
|
||||
3C15C0F10902D89500A8542F /* systime.h in Headers */,
|
||||
3C15C0F20902D89500A8542F /* syssignal.h in Headers */,
|
||||
3C15C0F30902D89500A8542F /* sysselect.h in Headers */,
|
||||
3C15C0F50902D89500A8542F /* syntax.h in Headers */,
|
||||
3C15C0FD0902D89500A8542F /* region-cache.h in Headers */,
|
||||
3C15C0FF0902D89500A8542F /* regex.h in Headers */,
|
||||
3C15C1020902D89500A8542F /* puresize.h in Headers */,
|
||||
3C15C1030902D89500A8542F /* process.h in Headers */,
|
||||
3C15C1080902D89500A8542F /* point.h in Headers */,
|
||||
3C15C1090902D89500A8542F /* param.h in Headers */,
|
||||
3C15C10B0902D89500A8542F /* nsgui.h in Headers */,
|
||||
3C15C10C0902D89500A8542F /* ndir.h in Headers */,
|
||||
3C15C1110902D89500A8542F /* mem-limits.h in Headers */,
|
||||
3C15C1120902D89500A8542F /* md5.h in Headers */,
|
||||
3C15C1190902D89500A8542F /* macros.h in Headers */,
|
||||
3C15C1220902D89500A8542F /* keymap.h in Headers */,
|
||||
3C15C1240902D89500A8542F /* keyboard.h in Headers */,
|
||||
3C15C1270902D89500A8542F /* intervals.h in Headers */,
|
||||
3C15C12A0902D89500A8542F /* indent.h in Headers */,
|
||||
3C15C1320902D89500A8542F /* category.h in Headers */,
|
||||
3C15C1330902D89500A8542F /* coding.h in Headers */,
|
||||
3C15C1340902D89500A8542F /* buffer.h in Headers */,
|
||||
3C15C1350902D89500A8542F /* vlimit.h in Headers */,
|
||||
3C15C1450902D89500A8542F /* cm.h in Headers */,
|
||||
3C15C14E0902D89500A8542F /* uaf.h in Headers */,
|
||||
3C15C1510902D89500A8542F /* termopts.h in Headers */,
|
||||
3C15C15C0902D89500A8542F /* window.h in Headers */,
|
||||
3C15C1720902D89500A8542F /* gnu.h in Headers */,
|
||||
3C15C1740902D89500A8542F /* getpagesize.h in Headers */,
|
||||
3C15C17B0902D89500A8542F /* disptab.h in Headers */,
|
||||
3C15C17E0902D89500A8542F /* epaths.h in Headers */,
|
||||
3C15C1810902D89500A8542F /* ccl.h in Headers */,
|
||||
3C15C1830902D89500A8542F /* composite.h in Headers */,
|
||||
3C15C1840902D89500A8542F /* charset.h in Headers */,
|
||||
3C15C1850902D89500A8542F /* fontset.h in Headers */,
|
||||
3C15C1930902D89500A8542F /* commands.h in Headers */,
|
||||
3C15C1950902D89500A8542F /* dispextern.h in Headers */,
|
||||
3C15C1970902D89500A8542F /* acldef.h in Headers */,
|
||||
3C15C19A0902D89500A8542F /* character.h in Headers */,
|
||||
3C15C19E0902D89500A8542F /* chpdef.h in Headers */,
|
||||
3C15C1A00902D89500A8542F /* frame.h in Headers */,
|
||||
3C15C1A20902D89500A8542F /* atimer.h in Headers */,
|
||||
3C15C1A30902D89500A8542F /* blockinput.h in Headers */,
|
||||
3CDCED340902E99700B2EF7E /* config.h in Headers */,
|
||||
3C4D6D6C0DE50D2300B20D4E /* font.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
3CC542FE07E2315800C271A9 /* Emacs */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */;
|
||||
buildPhases = (
|
||||
3CC542FF07E2315800C271A9 /* Headers */,
|
||||
3CC5430007E2315800C271A9 /* Resources */,
|
||||
3CC5430407E2315800C271A9 /* Sources */,
|
||||
3CC5434707E2315800C271A9 /* Frameworks */,
|
||||
3CC5434907E2315800C271A9 /* Rez */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Emacs;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = Emacs;
|
||||
productReference = 3CC5434C07E2315800C271A9 /* Emacs.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */;
|
||||
compatibilityVersion = "Xcode 2.4";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* Emacs */;
|
||||
projectDirPath = "";
|
||||
projectRoot = ../..;
|
||||
targets = (
|
||||
3CC542FE07E2315800C271A9 /* Emacs */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
3CC5430007E2315800C271A9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CB8E29A0E2CE6BF003F3104 /* preferences.nib in Resources */,
|
||||
3CB8E29E0E2CE73A003F3104 /* Emacs.icns in Resources */,
|
||||
3CB8E2A00E2CE7F5003F3104 /* Credits.html in Resources */,
|
||||
3CB8E2A70E2CE856003F3104 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXRezBuildPhase section */
|
||||
3CC5434907E2315800C271A9 /* Rez */ = {
|
||||
isa = PBXRezBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
3CC5430407E2315800C271A9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CC5430607E2315800C271A9 /* nsfns.m in Sources */,
|
||||
3CC5430707E2315800C271A9 /* nsmenu.m in Sources */,
|
||||
3CC5430807E2315800C271A9 /* nsselect.m in Sources */,
|
||||
3CC5430907E2315800C271A9 /* nsterm.m in Sources */,
|
||||
3C15C1A80902D97100A8542F /* nsimage.m in Sources */,
|
||||
3CDCEDD00902EA8200B2EF7E /* term.c in Sources */,
|
||||
3CDCEDD10902EA8200B2EF7E /* sysdep.c in Sources */,
|
||||
3CDCEDD20902EA8200B2EF7E /* syntax.c in Sources */,
|
||||
3CDCEDD40902EA8200B2EF7E /* strftime.c in Sources */,
|
||||
3CDCEDD50902EA8200B2EF7E /* sound.c in Sources */,
|
||||
3CDCEDD70902EA8200B2EF7E /* search.c in Sources */,
|
||||
3CDCEDD80902EA8200B2EF7E /* scroll.c in Sources */,
|
||||
3CDCEDD90902EA8200B2EF7E /* region-cache.c in Sources */,
|
||||
3CDCEDDA0902EA8200B2EF7E /* regex.c in Sources */,
|
||||
3CDCEDDC0902EA8200B2EF7E /* process.c in Sources */,
|
||||
3CDCEDDD0902EA8200B2EF7E /* print.c in Sources */,
|
||||
3CDCEDDF0902EA8200B2EF7E /* pre-crt0.c in Sources */,
|
||||
3CDCEDE20902EA8200B2EF7E /* minibuf.c in Sources */,
|
||||
3CDCEDE30902EA8200B2EF7E /* md5.c in Sources */,
|
||||
3CDCEDE40902EA8200B2EF7E /* marker.c in Sources */,
|
||||
3CDCEDE80902EA8200B2EF7E /* macros.c in Sources */,
|
||||
3CDCEDEC0902EA8200B2EF7E /* lread.c in Sources */,
|
||||
3CDCEDED0902EA8200B2EF7E /* lastfile.c in Sources */,
|
||||
3CDCEDEE0902EA8200B2EF7E /* keymap.c in Sources */,
|
||||
3CDCEDEF0902EA8200B2EF7E /* keyboard.c in Sources */,
|
||||
3CDCEDF00902EA8200B2EF7E /* intervals.c in Sources */,
|
||||
3CDCEDF10902EA8200B2EF7E /* insdel.c in Sources */,
|
||||
3CDCEDF20902EA8200B2EF7E /* indent.c in Sources */,
|
||||
3CDCEDF30902EA8200B2EF7E /* image.c in Sources */,
|
||||
3CDCEDF50902EA8200B2EF7E /* cmds.c in Sources */,
|
||||
3CDCEDF60902EA8200B2EF7E /* category.c in Sources */,
|
||||
3CDCEDF70902EA8200B2EF7E /* coding.c in Sources */,
|
||||
3CDCEDFE0902EA8200B2EF7E /* unexmacosx.c in Sources */,
|
||||
3CDCEE060902EA8200B2EF7E /* buffer.c in Sources */,
|
||||
3CDCEE070902EA8200B2EF7E /* character.c in Sources */,
|
||||
3CDCEE0D0902EA8200B2EF7E /* undo.c in Sources */,
|
||||
3CDCEE0F0902EA8200B2EF7E /* textprop.c in Sources */,
|
||||
3CDCEE100902EA8200B2EF7E /* terminfo.c in Sources */,
|
||||
3CDCEE170902EA8200B2EF7E /* xfaces.c in Sources */,
|
||||
3CDCEE180902EA8200B2EF7E /* xdisp.c in Sources */,
|
||||
3CDCEE190902EA8200B2EF7E /* window.c in Sources */,
|
||||
3CDCEE2B0902EA8200B2EF7E /* doprnt.c in Sources */,
|
||||
3CDCEE2C0902EA8200B2EF7E /* doc.c in Sources */,
|
||||
3CDCEE2D0902EA8200B2EF7E /* dired.c in Sources */,
|
||||
3CDCEE2E0902EA8200B2EF7E /* data.c in Sources */,
|
||||
3CDCEE2F0902EA8200B2EF7E /* callint.c in Sources */,
|
||||
3CDCEE310902EA8200B2EF7E /* ccl.c in Sources */,
|
||||
3CDCEE320902EA8200B2EF7E /* fontset.c in Sources */,
|
||||
3CDCEE330902EA8200B2EF7E /* fns.c in Sources */,
|
||||
3CDCEE340902EA8200B2EF7E /* floatfns.c in Sources */,
|
||||
3CDCEE360902EA8200B2EF7E /* filemode.c in Sources */,
|
||||
3CDCEE370902EA8200B2EF7E /* filelock.c in Sources */,
|
||||
3CDCEE380902EA8200B2EF7E /* emacs.c in Sources */,
|
||||
3CDCEE390902EA8200B2EF7E /* editfns.c in Sources */,
|
||||
3CDCEE3A0902EA8200B2EF7E /* fileio.c in Sources */,
|
||||
3CDCEE3B0902EA8200B2EF7E /* eval.c in Sources */,
|
||||
3CDCEE3C0902EA8200B2EF7E /* casetab.c in Sources */,
|
||||
3CDCEE3D0902EA8200B2EF7E /* composite.c in Sources */,
|
||||
3CDCEE3E0902EA8200B2EF7E /* dispnew.c in Sources */,
|
||||
3CDCEE3F0902EA8200B2EF7E /* charset.c in Sources */,
|
||||
3CDCEE400902EA8200B2EF7E /* alloc.c in Sources */,
|
||||
3CDCEE410902EA8200B2EF7E /* bytecode.c in Sources */,
|
||||
3CDCEE420902EA8200B2EF7E /* callproc.c in Sources */,
|
||||
3CDCEE430902EA8200B2EF7E /* cm.c in Sources */,
|
||||
3CDCEE440902EA8200B2EF7E /* casefiddle.c in Sources */,
|
||||
3CDCEE450902EA8200B2EF7E /* fringe.c in Sources */,
|
||||
3CDCEE460902EA8200B2EF7E /* frame.c in Sources */,
|
||||
3CDCEE470902EA8200B2EF7E /* chartab.c in Sources */,
|
||||
3CDCEE480902EA8200B2EF7E /* atimer.c in Sources */,
|
||||
3C4D6D6B0DE50D2300B20D4E /* font.c in Sources */,
|
||||
3C4D6D6D0DE50D2300B20D4E /* termcap.c in Sources */,
|
||||
3C4D6D6E0DE50D2300B20D4E /* terminal.c in Sources */,
|
||||
3C4D6D6F0DE50D2300B20D4E /* tparam.c in Sources */,
|
||||
3C4D6D730DE50D5D00B20D4E /* nsfont.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
3CB8E2A60E2CE856003F3104 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
3CA115980C825A540007AFC2 /* Development */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.3.0.sdk/System/Library/Frameworks\"";
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 1;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
COCOA,
|
||||
HAVE_CONFIG_H,
|
||||
emacs,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "-lncurses";
|
||||
PRODUCT_NAME = Emacs;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Development;
|
||||
};
|
||||
3CA115990C825A540007AFC2 /* Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.3.0.sdk/System/Library/Frameworks\"";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
COCOA,
|
||||
HAVE_CONFIG_H,
|
||||
emacs,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "-lncurses";
|
||||
PRODUCT_NAME = Emacs;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Deployment;
|
||||
};
|
||||
3CA1159A0C825A540007AFC2 /* Default */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
FRAMEWORK_SEARCH_PATHS = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.3.0.sdk/System/Library/Frameworks\"";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = Emacs;
|
||||
SECTORDER_FLAGS = "";
|
||||
WARNING_CFLAGS = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Default;
|
||||
};
|
||||
3CA1159C0C825A540007AFC2 /* Development */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.3.0.sdk;
|
||||
};
|
||||
name = Development;
|
||||
};
|
||||
3CA1159D0C825A540007AFC2 /* Deployment */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.3.0.sdk;
|
||||
};
|
||||
name = Deployment;
|
||||
};
|
||||
3CA1159E0C825A540007AFC2 /* Default */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.3;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.3.0.sdk;
|
||||
};
|
||||
name = Default;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3CA115980C825A540007AFC2 /* Development */,
|
||||
3CA115990C825A540007AFC2 /* Deployment */,
|
||||
3CA1159A0C825A540007AFC2 /* Default */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Default;
|
||||
};
|
||||
3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3CA1159C0C825A540007AFC2 /* Development */,
|
||||
3CA1159D0C825A540007AFC2 /* Deployment */,
|
||||
3CA1159E0C825A540007AFC2 /* Default */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Default;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
216
nextstep/FOR-RELEASE
Normal file
216
nextstep/FOR-RELEASE
Normal file
|
@ -0,0 +1,216 @@
|
|||
-*- outline -*-
|
||||
|
||||
* NON-SPECIFIC
|
||||
|
||||
** Remove Feval calls relating to insert working text in isearch mode.
|
||||
|
||||
** free_frame_resources, face colors
|
||||
|
||||
** look at nsfont_char_width and nsfont_string_width utils (Dan C.)
|
||||
|
||||
** config improvements (Dan C.)
|
||||
|
||||
* Mac-related:
|
||||
|
||||
** open file:/// URLs
|
||||
|
||||
** finish handle terminate request (user logout)
|
||||
|
||||
** put frame autopositioning into C code somewhere -- if loc = same, offset
|
||||
|
||||
** automap ctrl-mouse-1 to mouse-3
|
||||
|
||||
** deal with Finder aliases somehow
|
||||
|
||||
** Ctrl-F2 won't pull up menus
|
||||
|
||||
|
||||
* Cursor:
|
||||
|
||||
** ns_cursor_blink_rate: when set in preferences, somehow save the option (but
|
||||
calling custom-save-all from this causes error)
|
||||
|
||||
** cursor nonerase on certain Leopard and Tiger installations
|
||||
|
||||
** if I do: (mouse-avoidance-mode 'banish) and then minimize Emacs, it pops back immediately.
|
||||
Also, it insists on being on top of other windows if they overlap.
|
||||
|
||||
** cursor-over bugs w/some scripts (move around in HELLO to see)
|
||||
|
||||
|
||||
Keyboard:
|
||||
|
||||
On a German (PowerBook?) keyboard alt-` produces the correct ˚, without alt modifier only the message “<S-268632064> is undefined” is produced. Peter Maurer’s Key codes shows:
|
||||
* Modifier Change: ⇧ 131330/0x20102
|
||||
* Key Down/Up event: ⇧ 24/0x18
|
||||
[note, this is += key on German KB setting on US keyboard]
|
||||
[unable to reproduce w/German KB setting -- need German laptop?]
|
||||
|
||||
** numeric keysetting bug
|
||||
|
||||
|
||||
* Other:
|
||||
|
||||
** better recog of unicode scripts / Greek / composition
|
||||
|
||||
** Ctrl-g not picked up in all situations get --experimental-ctrl-g in 'compile' working better
|
||||
|
||||
** Exec-dump not working on GNUstep (so slow startup).
|
||||
|
||||
** occasional size too large for screen errors
|
||||
|
||||
** undo for color-drag face customization
|
||||
|
||||
|
||||
|
||||
|
||||
---------
|
||||
* DONE
|
||||
|
||||
Try font-backend mechanism (see font.h).
|
||||
|
||||
Auto font substitution?
|
||||
|
||||
ns-option-modifier (alias for ns-alternate-modifier)
|
||||
|
||||
ns-control-modifier, ns-function-modifier (new)
|
||||
|
||||
- Frame bugs:
|
||||
- create frame on second monitor fails (due to frame-parameters).
|
||||
|
||||
toolbar bugs
|
||||
|
||||
fix cursor disappears on italic text bug
|
||||
|
||||
fix scrollbar erase on Ctrl-l bug
|
||||
|
||||
Menubar emacs-21 compatibility. Make this and command-is-meta
|
||||
switchable at startup. Switch mouse handling to 3-button compatible.
|
||||
|
||||
mouse button normalization
|
||||
|
||||
|
||||
[rc1 released]
|
||||
|
||||
|
||||
shift-alt-h does produce Ó (according C-h k), but this glyph is not
|
||||
always shown completely, it seems to depend on the font used
|
||||
|
||||
[width estimation still off; this character is 211 = 0xD3]
|
||||
|
||||
Another attempt at composite rendering.
|
||||
|
||||
shift-alt-6 does not produce ^ (dead key) but &.
|
||||
[adding alt continues to pick up the '&' interpretation, but in other
|
||||
apps this suddenly changes it to a dead key]
|
||||
|
||||
- italic in Courier is still cut off
|
||||
|
||||
- dead keys end isearch w/o allowing typing
|
||||
[need to insert to minibuffer if that is active]
|
||||
|
||||
When using the Dvorak with Qwerty keyboard shortcuts keyboard layout
|
||||
(hereon in referred to as Dvorak-Qwerty), keyboard shortcuts
|
||||
erroneously use the Dvorak layout. e.g. The Qwerty H key becomes D in
|
||||
Dvorak, but with Dvorak-Qwerty the same key should be used when
|
||||
hitting Cmd-H to hide an application. In Emacs.app with a
|
||||
Dvorak-Qwerty layout I must hit Cmd-J (Qwerty J becomes H in Dvorak)
|
||||
to hide the app.
|
||||
|
||||
- menus
|
||||
|
||||
- consolidate FRAME_INTERNAL_BORDER extension hacks
|
||||
|
||||
- mouse-1 activation problems (buttons, etc.): check keyboard.c HAVE_NS sections
|
||||
|
||||
- clean up bg fill code in font->draw(), and change conditions on when called with bg=yes
|
||||
|
||||
- clean up / optimize the metrics caching -- consider reducing memory load
|
||||
|
||||
- non-encapsulated build
|
||||
|
||||
- test color-drag face customization (accuracy and saving)
|
||||
|
||||
- look at ns-mark-nav replacement
|
||||
|
||||
- gnustep
|
||||
|
||||
- documentation:
|
||||
- "stipple" images, alpha, color-drag, etc.
|
||||
- make sure everyone finds it
|
||||
|
||||
|
||||
[rc2 released]
|
||||
|
||||
- recheck font width determination for variable-width non-wide fonts
|
||||
|
||||
- resize-drag
|
||||
|
||||
- colored bitmaps (use NSCalibratedRGBColorspace for the bitmap and
|
||||
add a method setBitmapForegroundColor:color to twiddle the bits
|
||||
|
||||
- resize title printing bug
|
||||
|
||||
|
||||
[rc2a released]
|
||||
|
||||
- naming: cursor "line" -> "bar", "bar" -> underscore
|
||||
|
||||
- incorporate Pete's locallisp patch
|
||||
|
||||
- document needed sudo for compile --shared-lisp
|
||||
|
||||
|
||||
[patch 20071010_rc2a released]
|
||||
|
||||
- clean up ns-menu-bar.el and try folding into ns-win.el
|
||||
|
||||
- fix jaggedy startup screen w/black bkgrd
|
||||
|
||||
- Pete's fringe weirdness
|
||||
|
||||
- iconification: use shrunk image for non-finder types
|
||||
|
||||
- toolbar updating
|
||||
|
||||
|
||||
[patch 20071015_rc2a released]
|
||||
|
||||
- multi-TTY merge
|
||||
|
||||
- terminal mode weird colors (real fix)
|
||||
|
||||
- Frame bugs:
|
||||
- a full-height frame will be shrunk on defocus, focus
|
||||
[actually must be over-height, but it's a little overzealous in the
|
||||
shrinking; probably happens in x_set_window_size]
|
||||
- adding toolbar on full-height frame requires resize to avoid scrambling
|
||||
|
||||
- Buffers menu brokenness
|
||||
|
||||
- inability to use ARGB colors problem
|
||||
|
||||
- cut buffer in TTY
|
||||
|
||||
|
||||
[rc3 released]
|
||||
|
||||
- drop MULTI_KBOARD
|
||||
|
||||
- mic-paren removal (also see http://www.emacswiki.org/cgi-bin/wiki/mic-paren.el)
|
||||
|
||||
- describe-key problem
|
||||
|
||||
- drop need for preload advice (print-buffer workaround)
|
||||
|
||||
- new frame placement ignores parameters [cannot replicate]
|
||||
|
||||
- white text on background alpha
|
||||
|
||||
- Multi-TTY: switching input between tty and GUI frames still needs work.
|
||||
Once ns_select() and ns_read_socket() are being called, the regular terminal
|
||||
input route seems ineffective. Furthermore NSApp activate events are not
|
||||
picked up when attempting to read in terminal mode.
|
||||
(Tests: make-frame-on-tty /dev/ttyp#, make-frame-on-display)
|
||||
|
||||
- remove ns-yes-or-no-p, try again to improve looks of regular dialog in nsmenu.m
|
11
nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop
Normal file
11
nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Version=9.0
|
||||
Categories=GNUstep
|
||||
Name=Emacs
|
||||
Comment=GNU Emacs for NeXT/Open/GNUstep and OS X
|
||||
Icon=emacs.tiff
|
||||
Exec=openapp Emacs.app
|
||||
#TryExec=Emacs.app
|
||||
FilePattern=Emacs.app;Emacs
|
137
nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
Normal file
137
nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
Normal file
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
"!" = "Generated by ProjectCenter, do not edit";
|
||||
ApplicationDescription = "GNU Emacs for GNUstep / OS X";
|
||||
ApplicationIcon = emacs.tiff;
|
||||
ApplicationName = Emacs;
|
||||
ApplicationRelease = "9.0";
|
||||
Authors = (
|
||||
"Adrian Robert (GNUstep)",
|
||||
"Christophe de Dinechin (MacOS X)",
|
||||
"Scott Bender (OpenStep)",
|
||||
"Christian Limpach (NeXTStep)",
|
||||
"Carl Edman (NeXTStep)",
|
||||
"..see http://emacs-app.sf.net"
|
||||
);
|
||||
Copyright = "Copyright (C) 2005-2008";
|
||||
CopyrightDescription = "Released under the GNU General Public License Version 2";
|
||||
FullVersionID = "Emacs 23.0.60 NS 9.0";
|
||||
NSExecutable = Emacs;
|
||||
NSIcon = emacs.tiff;
|
||||
NSPrincipalClass = NSApplication;
|
||||
NSRole = Application;
|
||||
NSTypes = (
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
txt
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
c,
|
||||
h
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
m
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
C,
|
||||
cpp,
|
||||
H,
|
||||
cc
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
java
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
el
|
||||
);
|
||||
},
|
||||
{
|
||||
NSDocumentClass = "";
|
||||
NSHumanReadableName = "";
|
||||
NSIcon = "";
|
||||
NSName = "";
|
||||
NSRole = "";
|
||||
NSUnixExtensions = (
|
||||
*
|
||||
);
|
||||
}
|
||||
);
|
||||
NSServices = (
|
||||
{
|
||||
NSPortName = Emacs;
|
||||
NSMessage = requestService;
|
||||
NSUserData = open-selection
|
||||
NSSendTypes = (NSStringPboardType);
|
||||
NSMenuItem = {
|
||||
default = "Emacs.app/New Buffer Containing Selection";
|
||||
};
|
||||
},
|
||||
{
|
||||
NSPortName = Emacs;
|
||||
NSMessage = requestService;
|
||||
NSUserData = open-file
|
||||
NSSendTypes = (NSStringPboardType);
|
||||
NSMenuItem = {
|
||||
default = "Emacs.app/Open Selected File";
|
||||
};
|
||||
},
|
||||
{
|
||||
NSPortName = Emacs;
|
||||
NSMessage = requestService;
|
||||
NSUserData = mail-selection
|
||||
NSSendTypes = (NSStringPboardType);
|
||||
NSMenuItem = {
|
||||
default = "Emacs.app/Email Selection";
|
||||
};
|
||||
},
|
||||
{
|
||||
NSPortName = Emacs;
|
||||
NSMessage = requestService;
|
||||
NSUserData = mail-to
|
||||
NSSendTypes = (NSStringPboardType);
|
||||
NSMenuItem = {
|
||||
default = "Emacs.app/Send Email to Selected Address";
|
||||
};
|
||||
},
|
||||
);
|
||||
URL = "http://emacs-app.sf.net";
|
||||
}
|
BIN
nextstep/GNUstep/Emacs.base/Resources/emacs.tiff
Normal file
BIN
nextstep/GNUstep/Emacs.base/Resources/emacs.tiff
Normal file
Binary file not shown.
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"## Comment" = "Do NOT change this file, Gorm maintains it";
|
||||
EmacsPrefsController = {
|
||||
Actions = (
|
||||
"cancel:",
|
||||
"setDefaultFont:",
|
||||
"ok:",
|
||||
"resetToDefaults:",
|
||||
"runHelp:",
|
||||
"setColors:"
|
||||
);
|
||||
Outlets = (
|
||||
alternateModMenu,
|
||||
cursorBlinkSlider,
|
||||
cursorTypeMatrix,
|
||||
prefsWindow,
|
||||
expandSpaceSlider,
|
||||
commandModMenu
|
||||
);
|
||||
Super = NSObject;
|
||||
};
|
||||
FirstResponder = {
|
||||
Actions = (
|
||||
"setDefaultFont:",
|
||||
"resetToDefaults:",
|
||||
"runHelp:",
|
||||
"setColors:"
|
||||
);
|
||||
Super = NSObject;
|
||||
};
|
||||
}
|
BIN
nextstep/GNUstep/Emacs.base/Resources/preferences.gorm/data.info
Normal file
BIN
nextstep/GNUstep/Emacs.base/Resources/preferences.gorm/data.info
Normal file
Binary file not shown.
Binary file not shown.
321
nextstep/README.txt
Normal file
321
nextstep/README.txt
Normal file
|
@ -0,0 +1,321 @@
|
|||
|
||||
Emacs.app
|
||||
=========
|
||||
|
||||
This file introduces the NeXTstep-based port of GNU Emacs, known as Emacs.app,
|
||||
which runs on on many POSIX systems and possibly W32 using the GNUstep
|
||||
libraries and on MacOS X systems using the Cocoa libraries. The directory
|
||||
"nextstep" and its subdirectories "Cocoa" and "GNUstep" contain files
|
||||
relevant to building and running on these systems.
|
||||
|
||||
Those primarily responsible for the port (in chronological order) were:
|
||||
|
||||
Michael Brouwer
|
||||
Carl Edman
|
||||
Christian Limpach
|
||||
Scott Bender
|
||||
Christophe de Dinechin
|
||||
Adrian Robert
|
||||
|
||||
See AUTHORS file and "Release History" below for more information.
|
||||
|
||||
GNU Emacs is due to Richard Stallman and company.
|
||||
|
||||
The GNUstep port was made possible through the assistance of Adam Fedor, Fred
|
||||
Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas Matton, and Riccardo
|
||||
Mottola.
|
||||
|
||||
Peter Dyballa assisted in a variety of ways to improve text rendering and
|
||||
keyboard handling. Adam Ratcliffe documented the Preferences panel. David
|
||||
M. Cooke contributed fixes to XPM handling. Carsten Bormann helped get dired
|
||||
working for non-ASCII filenames.
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
MacOS X 10.3 or later
|
||||
- or -
|
||||
GNUstep "Startup 0.13" or later
|
||||
Tested on linux, should work on other systems, perhaps with minor build
|
||||
tweaking.
|
||||
|
||||
|
||||
Compilation
|
||||
-----------
|
||||
|
||||
Run "./compile" in this directory, which will create a self-contained
|
||||
Emacs.app under 'build/'. This can be moved anywhere and run. To create a
|
||||
shared-lisp build, do "sudo ./compile -shared <install_root>". Set
|
||||
<install_root> to where the lisp will go, for example /usr/local to end up
|
||||
with /usr/local/shared/emacs/...
|
||||
|
||||
See the script itself for further details, and customizations.
|
||||
|
||||
You can rerun configure and/or run 'make' manually in the top-level or src
|
||||
directories to refresh nextstep/build/Emacs.app. (Or edit the "compile"
|
||||
script.)
|
||||
|
||||
On OS X you can also open Cocoa/Emacs.xcodeproj and build it again there. (Note,
|
||||
ZeroLink currently does not work with Emacs owing to the use of private_extern
|
||||
in the code as well as some other, unidentifiable problem.) Before doing this
|
||||
you must run 'compile' once as outlined above, to set up the lisp resources.
|
||||
|
||||
On GNUstep, you CAN'T use ProjectCenter, since PC cannot work with files
|
||||
outside of its project directory.
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Please use the first entry under the help menu within Emacs.app, do
|
||||
"M-x info-ns-emacs".
|
||||
|
||||
|
||||
Background
|
||||
----------
|
||||
|
||||
Internally to emacs, the port and its code are referred to using the term
|
||||
"NeXTstep", despite the fact that no system or API has been released under
|
||||
this name in more than 10 years. Here's some background on why..
|
||||
|
||||
NeXT, Inc. introduced the NeXTstep API with its computer and operating system
|
||||
in the late 1980's. Later on in collaboration with Sun, this API was
|
||||
published as a specification called OpenStep. The GNUstep project started in
|
||||
the early 1990's to provide a free implementation of this API. Later on,
|
||||
Apple bought NeXT (some would say "NeXT bought Apple") and made OpenStep the
|
||||
basis of OS X, calling the API "Cocoa". Since then, Cocoa has evolved beyond
|
||||
the OpenStep specification, and GNUstep has followed it.
|
||||
|
||||
Thus, calling this port "OpenStep" is not technically accurate, and in the
|
||||
absence of any other determinant, we are using the term "NeXTstep", both
|
||||
because it signifies the original inspiration that created these APIs, and
|
||||
because all of the classes and functions still begin with the letters "NS".
|
||||
|
||||
(See http://en.wikipedia.org/wiki/Nextstep)
|
||||
|
||||
This Emacs port was first released in the early 1990's on the NeXT computer,
|
||||
and was successively updated to OpenStep, Rhapsody, OS X, and then finally
|
||||
GNUstep, tracking GNU emacs core releases in the meantime.
|
||||
|
||||
|
||||
Files specific to the port
|
||||
--------------------------
|
||||
|
||||
src/nsfns.m
|
||||
src/nsfont.m
|
||||
src/nsgui.h
|
||||
src/nsimage.m
|
||||
src/nsmenu.m
|
||||
src/nsselect.m
|
||||
src/nsterm.h
|
||||
src/nsterm.m
|
||||
lisp/ns-grabenv.el
|
||||
lisp/ns-carbon-compat.el
|
||||
lisp/term/ns-win.el
|
||||
lib-src/mac-fix-env.m
|
||||
doc/emacs/ns-emacs.texi
|
||||
etc/Emacs.clr
|
||||
nextstep/
|
||||
|
||||
|
||||
Files modified for port:
|
||||
|
||||
many -- look for HAVE_NS / NS_IMPL_... #ifdefs
|
||||
|
||||
|
||||
Release History
|
||||
---------------
|
||||
|
||||
1990-1992 1.0-3.0 (?) Michael Brouwer's socket/terminal communication
|
||||
based version (GUI ran as a separate process.)
|
||||
|
||||
1993/10/25 3.0.1 Last (?) release of Brouwer version. Supports
|
||||
NeXTstep 3.x and below.
|
||||
|
||||
1994/04/24 4.0 Carl Edman's version using direct API following
|
||||
the X-Windows port. NeXTstep 3.x only.
|
||||
|
||||
1995/06/15 4.1 Second (and last) Carl Edman release, based on
|
||||
Emacs 19.28.
|
||||
|
||||
1996/07/28 4.2 First Christian Limpach release, based on
|
||||
Emacs 19.29.
|
||||
|
||||
?? 5.0 ??
|
||||
|
||||
1997/12/?? 6.0b1 Ported to OpenStep by Scott Bender. Updated
|
||||
to Emacs 20.2.
|
||||
|
||||
?? 6.0b2 (?) Scott Bender: ported to Rhapsody.
|
||||
|
||||
1999/05/?? 6.0b3 Scott Bender: "OS X Server", Emacs 20.3.
|
||||
|
||||
2001/06/25 7.0 Ported to MacOS X (10.1) by Christophe de
|
||||
Dinechin. Release based on Emacs 20.7. Hosting
|
||||
moved to SourceForge.
|
||||
|
||||
2002/01/03 7.0.1 Bug fixes.
|
||||
|
||||
2002/08/27 7.0.2 Jaguar (OS X 10.2) support. Added an autoconf
|
||||
option for sys_nerr being in stdio. Added
|
||||
libncurses to the build libraries. Fixed a
|
||||
problem with ns-alternate-is-meta. Changed the
|
||||
icon color to blue, since Jaguar is yellow.
|
||||
|
||||
2004/10/07 8.0-pre1 Ported to GNUstep by Adrian Robert.
|
||||
|
||||
2004/11/04 8.0-pre2 Restored functionality on OS X (menu code
|
||||
cleanup). Improved scrollbar handling and
|
||||
paste from other applications. File icons
|
||||
obtained properly from NSWorkspace. Dropped
|
||||
Gorm and Nib files. Background refresh bug
|
||||
fixed (in GNUstep). Various small fixes and
|
||||
code cleanups. Now starts up under Art.
|
||||
|
||||
2005/01/27 8.0-pre3 Bold and italic faces supported. Cursor and
|
||||
mouse highlighting rendering bugs
|
||||
fixed. Drag/drop and cut/paste interaction
|
||||
w/external apps fixed. File load/save panels
|
||||
available. Stability and rendering speed
|
||||
improvements. Some ObjC and VC mode bugs fixed.
|
||||
|
||||
2005/02/27 8.0-rc1 Dynamic path detection at startup so Emacs.app
|
||||
can be moved anywhere. Added binary packages
|
||||
and simplified source installation to running
|
||||
two scripts. Thorough cleanup of menu code;
|
||||
now fully functional. Fixed all detected
|
||||
memory leaks. Minor frame focus and title
|
||||
bugs fixed.
|
||||
|
||||
2005/03/30 8.0-rc2 "Configure" info directory now uses dynamic
|
||||
path setting, so info files can go under .app.
|
||||
Improved select() handling and PTY fixes so
|
||||
shell mode and tramp run smoothly.
|
||||
Significant rendering optimizations under
|
||||
GNUstep, and now works under Art backend.
|
||||
Non-Latin text rendering works (but not
|
||||
fontsets), and LEIM is bundled. UTF8 is used
|
||||
for clipboard interaction.
|
||||
Arrow cursor now used on scrollbar.
|
||||
objc-mode and tramp now bundled in site-lisp.
|
||||
|
||||
2005/05/30 8.0-rc3 Fixed bug with parsing of "easymenu" menus.
|
||||
Many problems with modes such as SLIME, MatLab,
|
||||
and Planner go away. Improved scrollbar
|
||||
handling and rendering speed. Color panel
|
||||
and other bug fixes. mac-fix-env utility.
|
||||
Font handling improvements (OS X 10.3, 10.4):
|
||||
- heed 'GSFontAntiAlias' default
|
||||
- heed system antialiasing threshold
|
||||
- added 'UseQuickdrawSmoothing' default to
|
||||
invoke less heavy antialiasing
|
||||
|
||||
2005/07/05 8.0-rc4 Added a Preferences panel. Cleaned up
|
||||
rendering for synthetic italic fonts. Further
|
||||
improved menu parsing. Use system highlight
|
||||
color. Added previous- and next-mark history
|
||||
navigation commmands bound to M-p,M-n.
|
||||
Miscellaneous bug fixes.
|
||||
|
||||
2005/08/04 8.0-rc5 All internal string handling changed to UTF-8.
|
||||
This means menu items, color and color list
|
||||
names, and a few other things will now display
|
||||
properly. It does NOT mean UTF-8 filenames
|
||||
are displayed correctly in the minibuffer.
|
||||
Also relating to UTF-8, contents of files
|
||||
using this coding can now be displayed (though
|
||||
not auto-recognized; add extensions to your
|
||||
default coding alist). Limited mac-roman
|
||||
support was also added (also sans recognition).
|
||||
Certain characters are not displayed properly
|
||||
due to a translation problem. (UTF-8 based on
|
||||
work by Otfried Cheong; mac-roman from
|
||||
emacs-21.) Partial support for "dead-key"
|
||||
handling now added. Transparency (e.g., M-x
|
||||
set-background-color ARGB88FFFFFF) improved:
|
||||
only the background is made transparent.
|
||||
Cursor drawing glitches fixed. Preferences
|
||||
handling improved. Fixed some portability
|
||||
problems on Tiger and Puma.
|
||||
|
||||
2005/09/12 8.0 Bundled ispell on OS X. Minor bug fixes and
|
||||
stability improvements. Compiles under gcc-4.
|
||||
|
||||
2005/09/26 8.0.1 Correct clipped rendering for synthetic
|
||||
italics. Include the info directory.
|
||||
Fix grabenv. Bundle whitespace package.
|
||||
|
||||
2005/10/27 8.0.2 Correct rendering for wide characters during
|
||||
cursor movement. Fix bungled hack in ispell
|
||||
bundling.
|
||||
|
||||
2005/11/05 9.0-pre1 Updated to latest Emacs CVS code on unicode-2
|
||||
branch (proposed to be released 2006/2007 as
|
||||
Emacs 23).
|
||||
|
||||
2005/11/11 9.0-pre2 Fix crashes for deiconifying and loading
|
||||
certain images. Improve vertical font metrics
|
||||
(fixes inaccurate page up/down, window size,
|
||||
and partial lines). Support better remapping
|
||||
of Alt/Opt and remapping of Command. More
|
||||
insistent defaulting of scrollbar to right.
|
||||
Modest improvements to build process.
|
||||
|
||||
2006/04/22 9.0-pre2a Stopgap interim release to sync w/latest
|
||||
unicode-2 CVS. Includes XPM and partial
|
||||
toolbar support.
|
||||
|
||||
2006/06/08 9.0-pre3 Major upgrade to keyboard handling:
|
||||
system-selected compositional input methods
|
||||
should now work, as well as more keys /
|
||||
keyboards. XPM, toolbar, and tooltip support.
|
||||
Some improvements to scrollbars, zoom, italic
|
||||
rendering, pasting, Color panel. Added function
|
||||
ns-set-background-alpha to work around
|
||||
inability to customize with numeric colors.
|
||||
|
||||
2006/12/24 9.0-rc1 Reworked font handling and text rendering to
|
||||
use Kenichi Handa's new font back-end system.
|
||||
Font sets are now supported and automatically
|
||||
created when a font is selected. Added recent
|
||||
X11 colors to Emacs.clr (remove
|
||||
~/Library/Colors/Emacs.clr to pick up). Added
|
||||
ns-option-modifier, ns-control-modifier,
|
||||
ns-function-modifier customization variables.
|
||||
Update menus to Emacs 21+ conventions. Right
|
||||
mouse button now generates mouse-3 events.
|
||||
Various bug fixes and rendering improvements.
|
||||
|
||||
2007/09/10 9.0-rc2 Improve menubar, popup menu, and scrollbar
|
||||
behavior, let accented char entry work in
|
||||
isearch, follow system keymap for shortcut
|
||||
keys, fix border and box drawing, remove
|
||||
glitches in modeline drawing, support
|
||||
overstrike for unavailable bold fonts, fix XPM
|
||||
related crasher bugs. Incremental font
|
||||
metrics caching and other performance
|
||||
improvements. Shared-lisp builds now possible.
|
||||
|
||||
2007/09/20 9.0-rc2a Interim release. New features: composed
|
||||
character display, colored fringe bitmaps,
|
||||
colored relief drawing, dynamic resizing,
|
||||
Bug fixes: popup menu position and selection,
|
||||
font width calculation, face color adaptation
|
||||
to background, submenu keyboard navigation.
|
||||
NOT TESTED ON GNUSTEP.
|
||||
|
||||
2007/11/19 9.0-rc3 Integrated the multi-TTY functionality from
|
||||
emacs core (however, mixed TTY and GUI
|
||||
sessions are not working yet). Support 10.5.
|
||||
Give site-lisp load precedence over lisp and
|
||||
add a compile option to prefer an additional
|
||||
directory, use miniaturized miniwindow images
|
||||
in some cases, rename cursor types for
|
||||
consistency w/other emacs terms, improved font
|
||||
selection for symbol scripts.
|
||||
Bug fixes: fringe and bitmap, frame deletion,
|
||||
resizing, cursor blink, workspace open-file,
|
||||
image backgrounds, toolbar item enablement,
|
||||
context menu positioning.
|
||||
|
||||
2008/07/15 (none) Merge to GNU Emacs CVS trunk.
|
223
nextstep/compile
Executable file
223
nextstep/compile
Executable file
|
@ -0,0 +1,223 @@
|
|||
#!/bin/sh
|
||||
|
||||
# This script configures and builds Emacs to the subdirectory ./build .
|
||||
#
|
||||
# If --shared-lisp 'install_prefix' is given, lisp files will be installed to
|
||||
# install_prefix/share/emacs/23.0.0. This option must be run with 'sudo'.
|
||||
#
|
||||
# Otherwise (default) lisp will be installed under Emacs.app/Contents/Resources.
|
||||
# It does this by configuring it to install there, and running "make install".
|
||||
#
|
||||
# Some setup is different for GNUstep vs. Cocoa, and it determines which one
|
||||
# it's on using 'uname'.
|
||||
|
||||
# After it is run, Emacs can be run directly from the .app, which itself
|
||||
# can be placed anywhere.
|
||||
|
||||
# Further C development can be done using Xcode on OS X (not tested recently),
|
||||
# or by typing './remake' in the '../src' directory. Further Lisp
|
||||
# development can be done by either copying the files you modify
|
||||
# into install location, or running this script again.
|
||||
|
||||
|
||||
# Set up path and config variables.
|
||||
|
||||
PREFIX=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--shared-lisp=*)
|
||||
PREFIX=`echo "$1" | sed s/--shared-lisp=//`
|
||||
shift
|
||||
;;
|
||||
--enable-local-lisp-path=*)
|
||||
locallisppath=`echo "$1" | sed s/--enable-local-lisp-path=//`
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [--shared-lisp='install_root' --enable-local-lisp-path='some path(s)']"
|
||||
exit
|
||||
esac
|
||||
done
|
||||
|
||||
DISTDIR=`pwd`/..
|
||||
|
||||
#OPTFLAGS='-g -O2'
|
||||
OPTFLAGS='-g'
|
||||
|
||||
# MAC OS X
|
||||
if [ `uname` == "Darwin" ]; then
|
||||
BASEDIR=`pwd`/build/Emacs.app/Contents
|
||||
BINDIR=${BASEDIR}/MacOS
|
||||
if [ "x$PREFIX" == "x" ]; then
|
||||
PREFIX=${BASEDIR}/Resources
|
||||
fi
|
||||
# If you want to try experimental enhanced Ctrl-g support, add to NS_CFG_OPTS:
|
||||
# --enable-cocoa-experimental-ctrl-g
|
||||
# (See bottom of USAGE.txt)
|
||||
NS_CFG_OPTS="--with-ns --without-x --without-freetype --prefix=${PREFIX} --exec_prefix=${BASEDIR}/MacOS --libexecdir=${BASEDIR}/MacOS/libexec"
|
||||
# --enable-cocoa-experimental-ctrl-g"
|
||||
# MAKE="make -j3"
|
||||
steve=`/usr/sbin/sysctl hw.ncpu | awk '{print $NF}'`
|
||||
MAKE="make -j`expr $steve + 1`"
|
||||
export CC=gcc-4.0
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.3
|
||||
export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
|
||||
export MACOSX_DEPLOYMENT_TARGET_i386=10.4
|
||||
export CFLAGS="$OPTFLAGS -arch ppc -arch i386"
|
||||
# -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk
|
||||
# -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
||||
|
||||
# GNUSTEP
|
||||
else
|
||||
|
||||
# Currently must pass three dirs into Make process via environment variables.
|
||||
source /etc/GNUstep/GNUstep.conf
|
||||
if [ "x$GNUSTEP_MAKEFILES" == "x" ]; then
|
||||
if [ "x$GNUSTEP_SYSTEM_ROOT" == "x" ]; then
|
||||
echo "Failed to obtain any useful information from /etc/GNUstep/GNUstep.conf."
|
||||
echo "Please make sure GNUstep is installed on your system."
|
||||
exit
|
||||
fi
|
||||
GNUSTEP_MAKEFILES=${GNUSTEP_SYSTEM_ROOT}/Library/Makefiles
|
||||
GNUSTEP_SYSTEM_HEADERS=${GNUSTEP_SYSTEM_ROOT}/Library/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=${GNUSTEP_SYSTEM_ROOT}/Library/Libraries
|
||||
fi
|
||||
export GNUSTEP_MAKEFILES
|
||||
export GNUSTEP_SYSTEM_HEADERS
|
||||
export GNUSTEP_SYSTEM_LIBRARIES
|
||||
|
||||
BASEDIR=`pwd`/build/Emacs.app
|
||||
BINDIR=${BASEDIR}
|
||||
if [ "x${PREFIX}" == "x" ]; then
|
||||
PREFIX=${BASEDIR}/Resources
|
||||
fi
|
||||
NS_CFG_OPTS="--with-ns --without-x --without-freetype --prefix=${PREFIX} --exec-prefix=${BASEDIR} --libexecdir=${BASEDIR}/libexec"
|
||||
# --enable-cocoa-experimental-ctrl-g
|
||||
|
||||
if [ "x$MAKE" == "x" ]; then
|
||||
if [ "`gmake 2>&1`" == "gmake: *** No targets specified and no makefile found. Stop." ]; then
|
||||
MAKE=gmake
|
||||
else
|
||||
MAKE=make
|
||||
fi
|
||||
export MAKE
|
||||
CFLAGS="$OPTFLAGS"
|
||||
export CFLAGS
|
||||
fi
|
||||
|
||||
# PENDING: Not sure why this is needed
|
||||
export EMACSLOADPATH="${DISTDIR}/lisp:${DISTDIR}/lisp/emacs-lisp:${DISTDIR}/leim"
|
||||
fi
|
||||
|
||||
# End variable setup.
|
||||
###############################################################################
|
||||
|
||||
# Prepare a clean slate
|
||||
rm -fr build/Emacs.app
|
||||
|
||||
# Configure if needed
|
||||
cd ..
|
||||
if [ ! -f Makefile ]; then
|
||||
echo "./configure ${NS_CFG_OPTS}"
|
||||
./configure <<EOF ${NS_CFG_OPTS}
|
||||
EOF
|
||||
# ./configure ${NS_CFG_OPTS}
|
||||
if [ $? != 0 ]; then
|
||||
echo "*** Configure run failed. ***"
|
||||
echo "Please examine the above output to determine what went wrong,"
|
||||
echo "edit this script (\'compile\') to fix it, and rerun."
|
||||
# These are written BEFORE the job is compete, then it won't get done
|
||||
# next time, causing errors about CTLau-b5, tsang-b5, PY, etc..
|
||||
rm -f leim/changed.misc leim/changed.tit
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Pete's addition for local lisp load-path
|
||||
if [ "x$locallisppath" != "x" ]; then
|
||||
echo " * Local lisp path is being enabled"
|
||||
(cd src
|
||||
if [ -r epaths.h-orig ]; then
|
||||
# mv ../src/epaths.h-orig ../src/epaths.h
|
||||
echo "### src/epaths.h-orig already exists, no further change ###"
|
||||
else
|
||||
mv epaths.h epaths.h-orig
|
||||
printf "s,\(#define PATH_LOADSEARCH \"\),\\\1%s:,\n" "$
|
||||
{locallisppath}" > locallisppath.sed
|
||||
cat epaths.h-orig | sed -f locallisppath.sed > epaths.h
|
||||
rm locallisppath.sed
|
||||
fi)
|
||||
fi
|
||||
|
||||
# Clean up to avoid DOC-xxx and emacs-xxx out-of-controlness
|
||||
rm -f ../etc/DOC-* ../src/emacs-*
|
||||
|
||||
|
||||
# Go (installs binaries to ./build/Emacs.app, lisp to there or PREFIX)
|
||||
echo "make install"
|
||||
$MAKE
|
||||
status=$?
|
||||
|
||||
if [ -f src/epaths.h-orig ]; then
|
||||
mv src/epaths.h-orig src/epaths.h
|
||||
fi
|
||||
|
||||
if [ $status != 0 ]; then
|
||||
echo "*** Compilation failed. ***"
|
||||
echo "Please examine the above output to determine what went wrong,"
|
||||
echo "edit the configure options in this script (\'compile\') to fix it, and rerun."
|
||||
# rm -f leim/changed.misc leim/changed.tit
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$MAKE install
|
||||
if [ $? != 0 ]; then
|
||||
echo "*** Compilation succeeded, but .app assembly failed. ***"
|
||||
echo "Please examine the above output to determine what went wrong,"
|
||||
echo "edit the configure options in this script (\'compile\') to fix it, and rerun."
|
||||
# rm -f leim/changed.misc leim/changed.tit
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Move version stuff up to Resources
|
||||
cd ${BASEDIR}/Resources
|
||||
if [ -d share/emacs ]; then
|
||||
# clean up self-contained build
|
||||
mv -f share/emacs/*/* .
|
||||
fi
|
||||
|
||||
if [ ! -d info ]; then
|
||||
# happens on GNUstep, not OS X
|
||||
mv -f share/info .
|
||||
fi
|
||||
rm -fr share
|
||||
|
||||
# Get rid of .el.gz when .elc is present.. purists will complain, but this
|
||||
# knocks the app size down substantially.
|
||||
cd lisp
|
||||
#for f in `find . -name '*.elc' -print | sed -e s/.elc/.{el,el.gz}/`
|
||||
#do
|
||||
# rm -f $f
|
||||
#done
|
||||
|
||||
# Bin cleanup
|
||||
cd $BINDIR/bin
|
||||
rm -f emacs emacs-23*
|
||||
|
||||
# Move libexec stuff up, and link it from bin
|
||||
cd ../libexec
|
||||
mv -f emacs/*/*/* .
|
||||
rm -fr emacs
|
||||
cd ../bin
|
||||
ln -sf ../libexec/* .
|
||||
|
||||
# On OS X, install the bundled ispell
|
||||
#if [ `uname` == "Darwin" ]; then
|
||||
# cd $DISTDIR
|
||||
# cp ispell-3.3.01/bin/ispell* ${BINDIR}/libexec
|
||||
# cp -R ispell-3.3.01/lib ${BINDIR}/libexec
|
||||
#fi
|
||||
|
||||
echo ""
|
||||
echo "Build successful."
|
||||
echo ""
|
131
src/ChangeLog
131
src/ChangeLog
|
@ -1,3 +1,134 @@
|
|||
2008-07-15 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
Changes and additions for NeXTstep windowing system (Cocoa and
|
||||
GNUstep) support.
|
||||
|
||||
* Makefile.in
|
||||
* config.in: Support defines and build commands for NS port.
|
||||
* blockinput.h (BLOCK_INPUT, UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT)
|
||||
(UNBLOCK_INPUT_TO): Don't use under NS unless EXPERIMENTAL_CONTROL_G.
|
||||
* callproc.c (set_initial_environment): Initialize
|
||||
Vprocess_environment under CANNOT_DUMP (fixes crash when
|
||||
batch-compiling for bootstrap, due to Chris Hall).
|
||||
* dispextern.h: Include nsgui.h and add needed typedefs under NS
|
||||
windowing.
|
||||
(struct face): Add synth_ital field.
|
||||
* dispnew.c: Include nsterm.h when compiling under NS windowing.
|
||||
(init_display): Initialize Vinitial_window_system to "ns" when so
|
||||
compiled.
|
||||
* emacs.c: Include GSConfig.h when compiling under GNUstep.
|
||||
(display_arg): Use under NS.
|
||||
(main): Under NS, allocate autorelease pool and handle command line
|
||||
args. Move syms_of_xmenu() call under #ifdef HAVE_X_WINDOWS.
|
||||
(standard_args): Add NS-specific args.
|
||||
(shut_down_emacs): Shut down NS terminal if compiled under NS.
|
||||
* font.c (DEFAULT_ENCODING): New variable.
|
||||
(font_find_for_lface): Use it.
|
||||
(syms_of_font): Load syms_of_nsfont under NS.
|
||||
* font.h: Declare nsfont_driver when compiled under NS.
|
||||
* fontset.c: When compiling under NS, include nsterm.h.
|
||||
(fontset_from_font): Autoconstruct fontset under NS.
|
||||
* frame.c (various): Under NS, include nsterm.h, add Qns window system
|
||||
symbol, document and use it.
|
||||
(make_initial_frame): Call init_frame_faces(f) in CANNOT_DUMP case --
|
||||
patch to fix crash due to different init order, due to Chris Hall and
|
||||
Yamamoto Mitsuharu.
|
||||
(do_switch_frame): When for_deletion under Cocoa, add
|
||||
Fraise_frame(Qnil).
|
||||
(x_set_frame_parameters): Ensure font attribute changes are picked up.
|
||||
(x_get_arg): Allow "yes" and "no" as boolean values.
|
||||
(syms_of_frame): Declare Qns. Init Vdefault_frame_scroll_bars to
|
||||
Qright under Cocoa.
|
||||
(focus-follows-mouse): Default to 0 under NS.
|
||||
* frame.h (enum output_method): Add output_ns.
|
||||
(external_tool_bar, external_menu_bar, FRAME_EXTERNAL_TOOLBAR)
|
||||
(FRAME_EXTERNAL_MENU_BAR): Use under NS.
|
||||
(FRAME_WINDOW_P): NS-specific definition.
|
||||
* fringe.c (max_used_fringe_bitmap): Make public.
|
||||
* getloadavg.c (mach/mach.h): Include it under NeXT descendant OS's.
|
||||
(getloadavg): Use NeXT code under descendant OS's.
|
||||
* image.c (includes and header section, x_create_bitmap_from_data)
|
||||
(x_create_bitmap_from_file, free_bitmap_record, image_background)
|
||||
(image_background_transparent, x_clear_image_1)
|
||||
(x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image)
|
||||
(Create_Pixmap_From_Bitmap_Data, xpm_load_image, lookup_rgb_color)
|
||||
(x_to_xcolors, x_from_xcolors, x_disable_image)
|
||||
(x_build_heuristic_mask, syms_of_image): Add NS support parallel to
|
||||
other GUIs, including XPM support using code originally written for
|
||||
Carbon GUI.
|
||||
(png_load, jpeg_load, tiff_load, gif_load): Added implementations
|
||||
using NS API.
|
||||
(image_ascent): Use font metrics macros instead of direct struct field
|
||||
access.
|
||||
* keyboard.c (includes): Add nsterm.h when compiling under NS.
|
||||
(kbd_buffer_get_event): Handle NS as other GUI windowing systems.
|
||||
Also, handle NS as GTK for menu bar purposes.
|
||||
(make_lispy_event): Handle NS as other GUI windowing systems, and as X
|
||||
toolkit where they differ.
|
||||
(parse_menu_item): Prefer keybindings using 'super' modifier. Also,
|
||||
use cachelist, still needed under NS.
|
||||
* keyboard.h (ENCODE_MENU_STRING, XtPointer, Boolean): Handle as
|
||||
NTGUI.
|
||||
(struct widget_value): Define it here for menu.c.
|
||||
* keymap.c (includes): Include modifier internals.
|
||||
(lisp_to_mod, modifier_sequence_p): New functions, compiled only under
|
||||
NS.
|
||||
(where_is_internal, Fwhere_is_internal): When compiled under NS, add
|
||||
support for preferring sequences using certain modifiers, specified by
|
||||
the FIRSTONLY argument.
|
||||
* lisp.h (hash_remove): Rename to avoid name clash when compiling
|
||||
under NS GNUstep implementation.
|
||||
(USE_LSB_TAG): Use it under Cocoa when compiling under NS.
|
||||
* lread.c (init_lread): Treat NS as HAVE_CARBON for turn_off_warning.
|
||||
* menu.c: Include nsterm.h under NS.
|
||||
(single_menu_item, parse_single_submenu, xmalloc_widget_value)
|
||||
(free_menubar_widget_tree_value, update_submenu_strings)
|
||||
(find_and_call_menu_selection): Treat NS as X and NT.
|
||||
(find_and_return_menu_selection): New function, used for popup menus.
|
||||
* nsgui.h
|
||||
* nsterm.h
|
||||
* nsfns.m
|
||||
* nsimage.m
|
||||
* nsmenu.m
|
||||
* nsselect.m
|
||||
* nsterm.m: New files.
|
||||
* process.c (wait_reading_process_output): Under NS, call ns_select()
|
||||
instead of plain select().
|
||||
* syntax.c (char_quoted): Under NS, avoid a crash when called near
|
||||
beginning of buffer.
|
||||
* sysselect.h (init_process): Rename when compiling under Cocoa to
|
||||
avoid name conflict.
|
||||
* termhooks.h (display_info): Add ns_display_info to union.
|
||||
* terminal.c (Fterminal_live_p): Add ns to terminal types.
|
||||
* terminfo.c (UP, BC, PC): Don't declare when compiling under NS in
|
||||
COCOA environment.
|
||||
* unexnext.c: Update to work with mach API on Mac OS X, and to use new
|
||||
unexec() signature. (Note, this will dump, but the resulting file
|
||||
crashes; unexosx is used instead; keeping around for reference and
|
||||
possible aid in getting dump working under GNUstep.)
|
||||
* w32gui.h (button_type, widget_value): Remove definitions (now in
|
||||
keyboard.h).
|
||||
* window.c: Include nsterm.h when compiling under NS.
|
||||
* xdisp.c (includes): Include nsterm.h when compiling under NS.
|
||||
(set_frame_menubar, update_menu_bar, display_menu_bar): Handle NS as
|
||||
other GUI windowing systems.
|
||||
(update_tool_bar, redisplay_tool_bar, redisplay_window): Handle NS as
|
||||
GTK.
|
||||
(x_consider_frame_title): Under NS, set icon type and frame
|
||||
modified-state indicator; use ns_set_name_as_filename() when using
|
||||
formatted title.
|
||||
(update_window_cursor): Make public when compiling under NS.
|
||||
(display_hourglass_p, syms_of_xdisp, hourglass_shown_p)
|
||||
(hourglass_atimer, Vhourglass_delay
|
||||
* xfaces.c (header section, init_frame_faces, clear_font_table)
|
||||
(defined_color, unload_color, x_face_list_fonts)
|
||||
(prepare_face_for_display): Add NS support parallel to other GUIs)
|
||||
(emulate GCs like other non-X GUIs.
|
||||
(split_font_name): Don't lowercase font name under NS.
|
||||
(merge_face_ref, Finternal_set_lisp_face_attribute): Support stippling
|
||||
under NS.
|
||||
* s/darwin.h: Add support for compilation under NS.
|
||||
|
||||
2008-07-15 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
|
||||
|
|
|
@ -112,6 +112,11 @@ SHELL=/bin/sh
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/* Under GNUstep, putting libc on the link line causes problems. */
|
||||
#ifdef GNUSTEP
|
||||
#define LIB_STANDARD
|
||||
#endif
|
||||
|
||||
/* Unless inhibited or changed, use -lg to link for debugging. */
|
||||
#ifndef LIBS_DEBUG
|
||||
#define LIBS_DEBUG -lg
|
||||
|
@ -229,6 +234,15 @@ STARTFILES = START_FILES
|
|||
#endif /* not ORDINARY_LINK */
|
||||
|
||||
|
||||
#ifdef GNUSTEP
|
||||
/* Pull in stuff from GNUstep-make. */
|
||||
FOUNDATION_LIB=gnu
|
||||
GUI_LIB=gnu
|
||||
include $(GNUSTEP_MAKEFILES)/Additional/base.make
|
||||
include $(GNUSTEP_MAKEFILES)/Additional/gui.make
|
||||
shared=no
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DBUS
|
||||
DBUS_CFLAGS = @DBUS_CFLAGS@
|
||||
DBUS_LIBS = @DBUS_LIBS@
|
||||
|
@ -249,8 +263,11 @@ DBUS_OBJ = dbusbind.o
|
|||
/* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
|
||||
since it may have -I options that should override those two. */
|
||||
ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${CFLAGS} @FREETYPE_CFLAGS@ @FONTCONFIG_CFLAGS@ @LIBOTF_CFLAGS@ @M17N_FLT_CFLAGS@
|
||||
.SUFFIXES: .m
|
||||
.c.o:
|
||||
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
|
||||
.m.o:
|
||||
$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) GNU_OBJC_CFLAGS $<
|
||||
|
||||
#ifndef LIBX11_SYSTEM
|
||||
#define LIBX11_SYSTEM
|
||||
|
@ -260,13 +277,8 @@ ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHIN
|
|||
#define LIB_X11_LIB -lX11
|
||||
#endif
|
||||
|
||||
/* xmenu.c should not be compiled on OSX. */
|
||||
#ifndef HAVE_CARBON
|
||||
XMENU_OBJ = xmenu.o
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
|
||||
XMENU_OBJ = xmenu.o
|
||||
XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o
|
||||
|
||||
#ifdef HAVE_MENUS
|
||||
|
@ -518,6 +530,21 @@ emacsapp = $(PWD)/$(mac)Emacs.app/
|
|||
emacsappsrc = ${srcdir}/../mac/Emacs.app/
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
/* Object files for NeXTstep */
|
||||
NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
|
||||
fontset.o fringe.o image.o
|
||||
emacsapp = $(PWD)/../nextstep/build/Emacs.app/
|
||||
FONT_DRIVERS = nsfont.o
|
||||
#ifdef GNUSTEP
|
||||
emacsappsrc = ${srcdir}/../nextstep/GNUstep/Emacs.base
|
||||
emacsbindir = $(emacsapp)
|
||||
#else
|
||||
emacsappsrc = ${srcdir}/../nextstep/Cocoa/Emacs.base
|
||||
emacsbindir = $(emacsapp)/Contents/MacOS/
|
||||
#endif /* GNUSTEP */
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
#if defined (HAVE_XFT)
|
||||
|
@ -545,7 +572,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
|
|||
process.o callproc.o \
|
||||
region-cache.o sound.o atimer.o \
|
||||
doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
|
||||
$(MSDOS_OBJ) $(MAC_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
|
||||
$(MSDOS_OBJ) $(MAC_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_DRIVERS)
|
||||
|
||||
/* Object files used on some machine or other.
|
||||
These go in the DOC file on all machines
|
||||
|
@ -553,6 +580,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
|
|||
SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
|
||||
xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
|
||||
mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \
|
||||
nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o \
|
||||
w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
|
||||
w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
|
||||
|
||||
|
@ -876,6 +904,7 @@ SOME_MACHINE_LISP = ../lisp/mouse.elc \
|
|||
Note that SunOS needs -lm to come before -lc; otherwise, you get
|
||||
duplicated symbols. If the standard libraries were compiled
|
||||
with GCC, we might need gnulib again after them. */
|
||||
|
||||
LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) $(RSVG_LIBS) $(DBUS_LIBS) \
|
||||
LIBGPM LIBRESOLV LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
|
||||
LIBS_DEBUG $(GETLOADAVG_LIBS) \
|
||||
|
@ -910,7 +939,10 @@ emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} ${SOME_MACHINE_LISP}
|
|||
@: bootstrap-emacs, so let us replace it.
|
||||
-ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
|
||||
#endif /* ! defined (CANNOT_DUMP) */
|
||||
/* XXX: not working under NS currently due to path shenanigans.. */
|
||||
#ifndef HAVE_NS
|
||||
-./emacs -q -batch -f list-load-path-shadows
|
||||
#endif
|
||||
|
||||
/* We run make-docfile twice because the command line may get too long
|
||||
on some systems. */
|
||||
|
@ -935,9 +967,13 @@ ${libsrc}make-docfile${EXEEXT}:
|
|||
|
||||
temacs${EXEEXT}: $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} OBJECTS_MACHINE prefix-args${EXEEXT}
|
||||
echo "${obj} ${otherobj} " OBJECTS_MACHINE > buildobj.lst
|
||||
#ifdef GNUSTEP
|
||||
$(CC) -rdynamic YMF_PASS_LDFLAGS (${TEMACS_LDFLAGS}) -o temacs ${obj} ${otherobj} OBJECTS_MACHINE ${LIBES}
|
||||
#else
|
||||
$(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
|
||||
-o temacs ${STARTFILES} ${obj} ${otherobj} \
|
||||
OBJECTS_MACHINE ${LIBES}
|
||||
#endif
|
||||
|
||||
/* We do not use ALL_LDFLAGS because LD_SWITCH_SYSTEM and LD_SWITCH_MACHINE
|
||||
often contain options that have to do with using Emacs''s crt0,
|
||||
|
@ -1080,7 +1116,7 @@ fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h character.h \
|
|||
getloadavg.o: getloadavg.c $(config_h)
|
||||
image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
|
||||
systime.h xterm.h w32term.h w32gui.h macterm.h macgui.h font.h \
|
||||
$(config_h)
|
||||
nsterm.h nsgui.h $(config_h)
|
||||
indent.o: indent.c frame.h window.h indent.h buffer.h $(config_h) termchar.h \
|
||||
termopts.h disptab.h region-cache.h character.h category.h composite.h \
|
||||
dispextern.h keyboard.h
|
||||
|
@ -1089,7 +1125,8 @@ insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h character.h \
|
|||
keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
|
||||
commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
|
||||
systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
|
||||
atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h $(config_h)
|
||||
atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h nsterm.h \
|
||||
$(config_h)
|
||||
keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
|
||||
atimer.h systime.h puresize.h character.h intervals.h keymap.h window.h \
|
||||
$(config_h)
|
||||
|
@ -1155,15 +1192,15 @@ widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
|
|||
window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
|
||||
disptab.h keyboard.h dispextern.h msdos.h composite.h \
|
||||
keymap.h blockinput.h atimer.h systime.h $(INTERVAL_SRC) \
|
||||
xterm.h w32term.h macterm.h $(config_h)
|
||||
xterm.h w32term.h macterm.h nsterm.h $(config_h)
|
||||
xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
|
||||
coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
|
||||
charset.h $(config_h) keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h \
|
||||
w32term.h macterm.h msdos.h composite.h fontset.h blockinput.h atimer.h \
|
||||
systime.h keymap.h font.h
|
||||
w32term.h macterm.h nsterm.h msdos.h composite.h fontset.h blockinput.h \
|
||||
atimer.h systime.h keymap.h font.h
|
||||
xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
|
||||
window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
|
||||
systime.h keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) \
|
||||
systime.h keyboard.h fontset.h w32term.h macterm.h nsterm.h $(INTERVAL_SRC) \
|
||||
termchar.h termhooks.h font.h $(config_h)
|
||||
xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
|
||||
$(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
|
||||
|
@ -1276,7 +1313,38 @@ macosx-app: macosx-bundle ${emacsapp}Contents/MacOS/Emacs
|
|||
${emacsapp}Contents/MacOS/Emacs: emacs${EXEEXT}
|
||||
mkdir -p ${emacsapp}Contents/MacOS/;
|
||||
cd ${emacsapp}Contents/MacOS/; cp ../../../../src/emacs${EXEEXT} Emacs${EXEEXT}
|
||||
#endif
|
||||
#endif /* HAVE_CARBON */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
abbrev.o buffer.o callint.o cmds.o dispnew.o editfns.o fileio.o frame.o \
|
||||
fontset.o indent.o insdel.o keyboard.o macros.o minibuf.o msdos.o process.o \
|
||||
scroll.o sysdep.o term.o widget.o window.o xdisp.o xfaces.o xfns.o \
|
||||
xterm.o xselect.o sound.o: nsgui.h
|
||||
nsfns.o: nsfns.m charset.h nsterm.h nsgui.h frame.h window.h buffer.h \
|
||||
dispextern.h nsgui.h fontset.h $(INTERVAL_SRC) keyboard.h blockinput.h \
|
||||
atimer.h systime.h epaths.h termhooks.h coding.h systime.h $(config_h)
|
||||
nsmenu.o: nsmenu.m termhooks.h frame.h window.h dispextern.h \
|
||||
nsgui.h keyboard.h blockinput.h atimer.h systime.h buffer.h \
|
||||
nsterm.h $(config_h)
|
||||
nsterm.o: nsterm.m blockinput.h atimer.h systime.h syssignal.h nsterm.h \
|
||||
nsgui.h frame.h charset.h ccl.h dispextern.h fontset.h termhooks.h \
|
||||
termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
|
||||
$(INTERVAL_SRC) process.h coding.h $(config_h)
|
||||
nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h $(config_h)
|
||||
nsimage.o: nsimage.m nsterm.h
|
||||
nsfont.o: nsterm.h dispextern.h frame.h lisp.h $(config_h)
|
||||
|
||||
${emacsapp}: ${emacsappsrc}
|
||||
mkdir -p ${emacsapp}
|
||||
( cd ${emacsappsrc} ; tar cfh - . ) | ( cd ${emacsapp} ; tar xf - )
|
||||
|
||||
${emacsbindir}Emacs: emacs${EXEEXT}
|
||||
mkdir -p ${emacsbindir}
|
||||
cp -f emacs${EXEEXT} ${emacsbindir}Emacs
|
||||
|
||||
ns-app: ${emacsapp} ${emacsbindir}Emacs
|
||||
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
mostlyclean:
|
||||
rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
|
||||
|
@ -1285,6 +1353,9 @@ mostlyclean:
|
|||
rm -f buildobj.lst
|
||||
clean: mostlyclean
|
||||
rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
|
||||
#ifdef GNUSTEP
|
||||
rm -f *.d
|
||||
#endif
|
||||
/* bootstrap-clean is used to clean up just before a bootstrap.
|
||||
It should remove all files generated during a compilation/bootstrap,
|
||||
but not things like config.status or TAGS. */
|
||||
|
|
|
@ -59,6 +59,16 @@ extern int interrupt_input_pending;
|
|||
|
||||
extern int pending_atimers;
|
||||
|
||||
#if defined HAVE_NS && !defined COCOA_EXPERIMENTAL_CTRL_G
|
||||
/* NS does not use interrupt-driven input processing (yet), so this is
|
||||
unneeded and moreover was causing problems. */
|
||||
#define BLOCK_INPUT
|
||||
#define UNBLOCK_INPUT
|
||||
#define TOTALLY_UNBLOCK_INPUT
|
||||
#define UNBLOCK_INPUT_TO(LEVEL)
|
||||
|
||||
#else
|
||||
|
||||
/* Begin critical section. */
|
||||
#define BLOCK_INPUT (interrupt_input_blocked++)
|
||||
|
||||
|
@ -115,6 +125,8 @@ extern int pending_atimers;
|
|||
} \
|
||||
while (0)
|
||||
|
||||
#endif /* defined HAVE_NS && !defined COCOA_EXPERIMENTAL_CTRL_G */
|
||||
|
||||
#define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
|
||||
|
||||
/* In critical section ? */
|
||||
|
|
|
@ -1587,8 +1587,11 @@ set_initial_environment ()
|
|||
register char **envp;
|
||||
#ifndef CANNOT_DUMP
|
||||
if (initialized)
|
||||
#endif
|
||||
{
|
||||
#else
|
||||
{
|
||||
Vprocess_environment = Qnil;
|
||||
#endif
|
||||
for (envp = environ; *envp; envp++)
|
||||
Vprocess_environment = Fcons (build_string (*envp),
|
||||
Vprocess_environment);
|
||||
|
|
|
@ -30,6 +30,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if the mktime function is broken. */
|
||||
#undef BROKEN_MKTIME
|
||||
|
||||
/* Define to 1 if you are trying experimental enhanced Ctrl-g support using NS
|
||||
windowing under MacOS X. */
|
||||
#undef COCOA_EXPERIMENTAL_CTRL_G
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
|
@ -472,6 +476,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the <nlist.h> header file. */
|
||||
#undef HAVE_NLIST_H
|
||||
|
||||
/* Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on
|
||||
Mac OS X. */
|
||||
#undef HAVE_NS
|
||||
|
||||
/* Define to 1 if personality LINUX32 can be set. */
|
||||
#undef HAVE_PERSONALITY_LINUX32
|
||||
|
||||
|
@ -798,6 +806,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you don't have struct exception in math.h. */
|
||||
#undef NO_MATHERR
|
||||
|
||||
/* Define to 1 if you are using NS windowing under MacOS X. */
|
||||
#undef NS_IMPL_COCOA
|
||||
|
||||
/* Define to 1 if you are using NS windowing under GNUstep. */
|
||||
#undef NS_IMPL_GNUSTEP
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
|
@ -965,8 +979,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#undef volatile
|
||||
|
||||
|
||||
/* If we're using any sort of window system, define some consequences. */
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
/* If we're using X11/Carbon/GNUstep, define some consequences. */
|
||||
#if defined HAVE_X_WINDOWS || defined(HAVE_CARBON) || defined(HAVE_NS)
|
||||
#define HAVE_WINDOW_SYSTEM
|
||||
#define MULTI_KBOARD
|
||||
#define HAVE_MOUSE
|
||||
|
@ -978,13 +992,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define MULTI_KBOARD
|
||||
#endif
|
||||
|
||||
/* If we're using the Carbon API on Mac OS X, define a few more
|
||||
variables as well. */
|
||||
#ifdef HAVE_CARBON
|
||||
#define HAVE_WINDOW_SYSTEM
|
||||
#define HAVE_MOUSE
|
||||
/* Sadly for now, GNUstep dump does not work. */
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
#define CANNOT_DUMP
|
||||
#endif
|
||||
|
||||
/* PENDING: These are used for the Carbon port only. */
|
||||
#undef MAC_OS
|
||||
#undef MAC_OSX
|
||||
|
||||
/* Define USER_FULL_NAME to return a string
|
||||
that is the user's full name.
|
||||
It can assume that the variable `pw'
|
||||
|
@ -1037,6 +1053,28 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include config_opsysfile
|
||||
#include config_machfile
|
||||
|
||||
/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
|
||||
(There is probably a better place to do this, but right now the Cocoa
|
||||
side does this in s/darwin.h, following the Carbon port, and we cannot
|
||||
parallel this exactly since GNUstep is multi-OS. */
|
||||
#ifdef HAVE_NS
|
||||
# ifdef C_SWITCH_SYSTEM
|
||||
# undef C_SWITCH_SYSTEM
|
||||
# endif
|
||||
# ifdef NS_IMPL_GNUSTEP
|
||||
/* See also .m.o rule in Makefile.in */
|
||||
# define C_SWITCH_X_SYSTEM -MMD -MP -D_REENTRANT -fPIC -fno-strict-aliasing
|
||||
# define LD_SWITCH_SITE -lgnustep-gui -lgnustep-base -lobjc $(CONFIG_SYSTEM_LIBS) -lpthread
|
||||
# define GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE
|
||||
# define OTHER_FILES ns-app
|
||||
# else /* COCOA */
|
||||
# define C_SWITCH_X_SYSTEM
|
||||
# define GNU_OBJC_CFLAGS
|
||||
# endif /* COCOA */
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
|
||||
|
||||
/* If no remapping takes place, static variables cannot be dumped as
|
||||
pure, so don't worry about the `static' keyword. */
|
||||
#ifdef NO_REMAP
|
||||
|
|
|
@ -69,6 +69,14 @@ typedef Pixmap XImagePtr;
|
|||
typedef XImagePtr XImagePtr_or_DC;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsgui.h"
|
||||
/* following typedef needed to accomodate the MSDOS port, believe it or not */
|
||||
typedef struct ns_display_info Display_Info;
|
||||
typedef Pixmap XImagePtr;
|
||||
typedef XImagePtr XImagePtr_or_DC;
|
||||
#endif
|
||||
|
||||
#ifndef NativeRectangle
|
||||
#define NativeRectangle int
|
||||
#endif
|
||||
|
@ -1563,6 +1571,13 @@ struct face
|
|||
/* If non-zero, use overstrike (to simulate bold-face). */
|
||||
unsigned overstrike : 1;
|
||||
|
||||
/* NOTE: this is not used yet, but eventually this impl should be done
|
||||
similarly to overstrike */
|
||||
#ifdef HAVE_NS
|
||||
/* If non-zero, use geometric rotation (to simulate italic). */
|
||||
unsigned synth_ital : 1;
|
||||
#endif
|
||||
|
||||
/* Next and previous face in hash collision list of face cache. */
|
||||
struct face *next, *prev;
|
||||
|
||||
|
|
|
@ -63,6 +63,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "macterm.h"
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
|
||||
/* Include systime.h after xterm.h to avoid double inclusion of time.h. */
|
||||
|
||||
#include "systime.h"
|
||||
|
@ -6895,6 +6899,20 @@ init_display ()
|
|||
}
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
if (!inhibit_window_system
|
||||
#ifndef CANNOT_DUMP
|
||||
&& initialized
|
||||
#endif
|
||||
)
|
||||
{
|
||||
Vinitial_window_system = intern("ns");
|
||||
Vwindow_system_version = make_number(10);
|
||||
adjust_frame_glyphs_initially ();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If no window system has been specified, try to use the terminal. */
|
||||
if (! isatty (0))
|
||||
{
|
||||
|
|
84
src/emacs.c
84
src/emacs.c
|
@ -46,6 +46,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "w32heap.h" /* for prototype of sbrk */
|
||||
#endif
|
||||
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
/* At least under Debian, GSConfig is in a subdirectory. --Stef */
|
||||
#include <GNUstepBase/GSConfig.h>
|
||||
#endif
|
||||
|
||||
#include "lisp.h"
|
||||
#include "commands.h"
|
||||
#include "intervals.h"
|
||||
|
@ -193,7 +198,7 @@ int running_asynch_code;
|
|||
extern int inherited_pgroup;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
|
||||
/* If non-zero, -d was specified, meaning we're using some window system. */
|
||||
int display_arg;
|
||||
#endif
|
||||
|
@ -838,7 +843,7 @@ main (argc, argv
|
|||
run_time_remap (argv[0]);
|
||||
#endif
|
||||
|
||||
#ifdef MAC_OSX
|
||||
#if defined (MAC_OSX) || defined (NS_IMPL_COCOA)
|
||||
if (!initialized)
|
||||
unexec_init_emacs_zone ();
|
||||
#endif
|
||||
|
@ -1410,6 +1415,38 @@ main (argc, argv
|
|||
no_loadup
|
||||
= argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args);
|
||||
|
||||
#ifdef HAVE_NS
|
||||
ns_alloc_autorelease_pool();
|
||||
if (!noninteractive)
|
||||
{
|
||||
char *tmp;
|
||||
display_arg = 4;
|
||||
#ifdef NS_IMPL_COCOA
|
||||
if (skip_args < argc)
|
||||
{
|
||||
if (!strncmp(argv[skip_args], "-psn", 4))
|
||||
{
|
||||
skip_args += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (skip_args+1 < argc && !strncmp(argv[skip_args+1], "-psn", 4))
|
||||
skip_args += 2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* This used for remote operation.. not fully implemented yet. */
|
||||
if (argmatch (argv, argc, "-_NSMachLaunch", 0, 3, &tmp, &skip_args))
|
||||
display_arg = 4;
|
||||
else if (argmatch (argv, argc, "-MachLaunch", 0, 3, &tmp, &skip_args))
|
||||
display_arg = 4;
|
||||
else if (argmatch (argv, argc, "-macosx", 0, 2, NULL, &skip_args))
|
||||
display_arg = 4;
|
||||
else if (argmatch (argv, argc, "-NSHost", 0, 3, &tmp, &skip_args))
|
||||
display_arg = 4;
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
/* Stupid kludge to catch command-line display spec. We can't
|
||||
handle this argument entirely in window system dependent code
|
||||
|
@ -1487,6 +1524,13 @@ main (argc, argv
|
|||
init_mac_osx_environment ();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#ifndef CANNOT_DUMP
|
||||
if (initialized)
|
||||
#endif
|
||||
ns_init_paths ();
|
||||
#endif
|
||||
|
||||
/* egetenv is a pretty low-level facility, which may get called in
|
||||
many circumstances; it seems flimsy to put off initializing it
|
||||
until calling init_callproc. */
|
||||
|
@ -1588,6 +1632,7 @@ main (argc, argv
|
|||
#ifdef HAVE_X_WINDOWS
|
||||
syms_of_xterm ();
|
||||
syms_of_xfns ();
|
||||
syms_of_xmenu ();
|
||||
syms_of_fontset ();
|
||||
#ifdef HAVE_X_SM
|
||||
syms_of_xsmfns ();
|
||||
|
@ -1599,13 +1644,6 @@ main (argc, argv
|
|||
|
||||
syms_of_menu ();
|
||||
|
||||
#ifndef HAVE_NTGUI
|
||||
#ifndef MAC_OS
|
||||
/* Called before init_window_once for Mac OS Classic. */
|
||||
syms_of_xmenu ();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
syms_of_w32term ();
|
||||
syms_of_w32fns ();
|
||||
|
@ -1622,6 +1660,14 @@ main (argc, argv
|
|||
syms_of_fontset ();
|
||||
#endif /* MAC_OSX && HAVE_CARBON */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
syms_of_nsterm ();
|
||||
syms_of_nsfns ();
|
||||
syms_of_nsmenu ();
|
||||
syms_of_nsselect ();
|
||||
syms_of_fontset ();
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef HAVE_DBUS
|
||||
syms_of_dbusbind ();
|
||||
#endif /* HAVE_DBUS */
|
||||
|
@ -1843,6 +1889,15 @@ struct standard_args standard_args[] =
|
|||
{ "-color", "--color", 5, 0},
|
||||
{ "-no-splash", "--no-splash", 3, 0 },
|
||||
{ "-no-desktop", "--no-desktop", 3, 0 },
|
||||
#ifdef HAVE_NS
|
||||
{ "-NSAutoLaunch", 0, 5, 1 },
|
||||
{ "-NXAutoLaunch", 0, 5, 1 },
|
||||
{ "-disable-font-backend", "--disable-font-backend", 65, 0 },
|
||||
{ "-_NSMachLaunch", 0, 85, 1 },
|
||||
{ "-MachLaunch", 0, 85, 1 },
|
||||
{ "-macosx", 0, 85, 0 },
|
||||
{ "-NSHost", 0, 85, 1 },
|
||||
#endif
|
||||
/* These have the same priority as ordinary file name args,
|
||||
so they are not reordered with respect to those. */
|
||||
{ "-L", "--directory", 0, 1 },
|
||||
|
@ -1862,6 +1917,13 @@ struct standard_args standard_args[] =
|
|||
{ "-visit", "--visit", 0, 1 },
|
||||
{ "-file", "--file", 0, 1 },
|
||||
{ "-insert", "--insert", 0, 1 },
|
||||
#ifdef HAVE_NS
|
||||
{ "-NXOpen", 0, 0, 1 },
|
||||
{ "-NXOpenTemp", 0, 0, 1 },
|
||||
{ "-NSOpen", 0, 0, 1 },
|
||||
{ "-NSOpenTemp", 0, 0, 1 },
|
||||
{ "-GSFilePath", 0, 0, 1 },
|
||||
#endif
|
||||
/* This should be processed after ordinary file name args and the like. */
|
||||
{ "-kill", "--kill", -10, 0 },
|
||||
};
|
||||
|
@ -2158,6 +2220,10 @@ shut_down_emacs (sig, no_x, stuff)
|
|||
#ifdef MSDOS
|
||||
dos_cleanup ();
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
ns_term_shutdown (sig);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
16
src/font.c
16
src/font.c
|
@ -46,6 +46,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "w32term.h"
|
||||
#endif /* HAVE_NTGUI */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef MAC_OS
|
||||
#include "macterm.h"
|
||||
#endif /* MAC_OS */
|
||||
|
@ -57,6 +61,12 @@ Lisp_Object Qopentype;
|
|||
/* Important character set strings. */
|
||||
Lisp_Object Qascii_0, Qiso8859_1, Qiso10646_1, Qunicode_bmp, Qunicode_sip;
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#define DEFAULT_ENCODING Qiso10646_1
|
||||
#else
|
||||
#define DEFAULT_ENCODING Qiso8859_1
|
||||
#endif
|
||||
|
||||
/* Special vector of zero length. This is repeatedly used by (struct
|
||||
font_driver *)->list when a specified font is not found. */
|
||||
static Lisp_Object null_vector;
|
||||
|
@ -3096,7 +3106,7 @@ font_find_for_lface (f, attrs, spec, c)
|
|||
registry[0] = AREF (spec, FONT_REGISTRY_INDEX);
|
||||
if (NILP (registry[0]))
|
||||
{
|
||||
registry[0] = Qiso8859_1;
|
||||
registry[0] = DEFAULT_ENCODING;
|
||||
registry[1] = Qascii_0;
|
||||
registry[2] = null_vector;
|
||||
}
|
||||
|
@ -4948,6 +4958,7 @@ extern void syms_of_ftxfont P_ (());
|
|||
extern void syms_of_bdffont P_ (());
|
||||
extern void syms_of_w32font P_ (());
|
||||
extern void syms_of_atmfont P_ (());
|
||||
extern void syms_of_nsfont P_ (());
|
||||
|
||||
void
|
||||
syms_of_font ()
|
||||
|
@ -5117,6 +5128,9 @@ EMACS_FONT_LOG is set. Otherwise, it is set to t. */);
|
|||
#ifdef WINDOWSNT
|
||||
syms_of_w32font ();
|
||||
#endif /* WINDOWSNT */
|
||||
#ifdef HAVE_NS
|
||||
syms_of_nsfont ();
|
||||
#endif /* HAVE_NS */
|
||||
#ifdef MAC_OS
|
||||
syms_of_atmfont ();
|
||||
#endif /* MAC_OS */
|
||||
|
|
|
@ -860,6 +860,9 @@ extern struct font_driver uniscribe_font_driver;
|
|||
#ifdef MAC_OS
|
||||
extern struct font_driver atmfont_driver;
|
||||
#endif /* MAC_OS */
|
||||
#ifdef HAVE_NS
|
||||
extern struct font_driver nsfont_driver;
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifndef FONT_DEBUG
|
||||
#define FONT_DEBUG
|
||||
|
|
|
@ -47,6 +47,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef WINDOWSNT
|
||||
#include "w32term.h"
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
#ifdef MAC_OS
|
||||
#include "macterm.h"
|
||||
#endif
|
||||
|
@ -1622,6 +1625,11 @@ fontset_from_font (font_object)
|
|||
ASET (font_spec, i, Qnil);
|
||||
Fset_fontset_font (name, Qlatin, font_spec, Qnil, Qnil);
|
||||
Fset_fontset_font (name, Qnil, font_spec, Qnil, Qnil);
|
||||
|
||||
#ifdef HAVE_NS
|
||||
nsfont_make_fontset_for_font(name, font_object);
|
||||
#endif
|
||||
|
||||
return XINT (FONTSET_ID (fontset));
|
||||
}
|
||||
|
||||
|
|
41
src/frame.c
41
src/frame.c
|
@ -32,6 +32,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef MAC_OS
|
||||
#include "macterm.h"
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
#include "buffer.h"
|
||||
/* These help us bind and responding to switch-frame events. */
|
||||
#include "commands.h"
|
||||
|
@ -72,7 +75,7 @@ Lisp_Object Vframe_alpha_lower_limit;
|
|||
Lisp_Object Qframep, Qframe_live_p;
|
||||
Lisp_Object Qicon, Qmodeline;
|
||||
Lisp_Object Qonly;
|
||||
Lisp_Object Qx, Qw32, Qmac, Qpc;
|
||||
Lisp_Object Qx, Qw32, Qmac, Qpc, Qns;
|
||||
Lisp_Object Qvisible;
|
||||
Lisp_Object Qdisplay_type;
|
||||
Lisp_Object Qbackground_mode;
|
||||
|
@ -203,7 +206,8 @@ DEFUN ("framep", Fframep, Sframep, 1, 1, 0,
|
|||
Value is t for a termcap frame (a character-only terminal),
|
||||
`x' for an Emacs frame that is really an X window,
|
||||
`w32' for an Emacs frame that is a window on MS-Windows display,
|
||||
`mac' for an Emacs frame on a Macintosh display,
|
||||
`mac' for an Emacs frame on a Macintosh 8/9 X-Carbon display,
|
||||
`ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display,
|
||||
`pc' for a direct-write MS-DOS frame.
|
||||
See also `frame-live-p'. */)
|
||||
(object)
|
||||
|
@ -224,6 +228,8 @@ See also `frame-live-p'. */)
|
|||
return Qpc;
|
||||
case output_mac:
|
||||
return Qmac;
|
||||
case output_ns:
|
||||
return Qns;
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
|
@ -551,6 +557,11 @@ make_initial_frame (void)
|
|||
FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
|
||||
FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none;
|
||||
|
||||
#ifdef CANNOT_DUMP
|
||||
if (!noninteractive)
|
||||
init_frame_faces (f);
|
||||
#endif
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
|
@ -880,6 +891,12 @@ do_switch_frame (frame, track, for_deletion)
|
|||
|
||||
Fselect_window (XFRAME (frame)->selected_window, Qnil);
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
/* term gets no other notification of this */
|
||||
if (for_deletion)
|
||||
Fraise_frame(Qnil);
|
||||
#endif
|
||||
|
||||
/* We want to make sure that the next event generates a frame-switch
|
||||
event to the appropriate frame. This seems kludgy to me, but
|
||||
before you take it out, make sure that evaluating something like
|
||||
|
@ -2969,8 +2986,9 @@ x_set_frame_parameters (f, alist)
|
|||
|
||||
old_value = get_frame_param (f, prop);
|
||||
fullscreen_is_being_set |= EQ (prop, Qfullscreen);
|
||||
|
||||
#ifndef HAVE_NS /* PENDING: ensure font attrs change goes through */
|
||||
if (NILP (Fequal (val, old_value)))
|
||||
#endif
|
||||
{
|
||||
store_frame_param (f, prop, val);
|
||||
|
||||
|
@ -3949,6 +3967,9 @@ x_get_arg (dpyinfo, alist, param, attribute, class, type)
|
|||
case RES_TYPE_BOOLEAN:
|
||||
tem = Fdowncase (tem);
|
||||
if (!strcmp (SDATA (tem), "on")
|
||||
#ifdef HAVE_NS
|
||||
|| !strcmp(SDATA(tem), "yes")
|
||||
#endif
|
||||
|| !strcmp (SDATA (tem), "true"))
|
||||
return Qt;
|
||||
else
|
||||
|
@ -3964,9 +3985,15 @@ x_get_arg (dpyinfo, alist, param, attribute, class, type)
|
|||
Lisp_Object lower;
|
||||
lower = Fdowncase (tem);
|
||||
if (!strcmp (SDATA (lower), "on")
|
||||
#ifdef HAVE_NS
|
||||
|| !strcmp(SDATA(lower), "yes")
|
||||
#endif
|
||||
|| !strcmp (SDATA (lower), "true"))
|
||||
return Qt;
|
||||
else if (!strcmp (SDATA (lower), "off")
|
||||
#ifdef HAVE_NS
|
||||
|| !strcmp(SDATA(lower), "no")
|
||||
#endif
|
||||
|| !strcmp (SDATA (lower), "false"))
|
||||
return Qnil;
|
||||
else
|
||||
|
@ -4366,6 +4393,8 @@ syms_of_frame ()
|
|||
staticpro (&Qpc);
|
||||
Qmac = intern ("mac");
|
||||
staticpro (&Qmac);
|
||||
Qns = intern ("ns");
|
||||
staticpro (&Qns);
|
||||
Qvisible = intern ("visible");
|
||||
staticpro (&Qvisible);
|
||||
Qbuffer_predicate = intern ("buffer-predicate");
|
||||
|
@ -4473,8 +4502,8 @@ Setting this variable does not affect existing frames, only new ones. */);
|
|||
DEFVAR_LISP ("default-frame-scroll-bars", &Vdefault_frame_scroll_bars,
|
||||
doc: /* Default position of scroll bars on this window-system. */);
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
#if defined(HAVE_NTGUI) || defined(MAC_OS)
|
||||
/* MS-Windows has scroll bars on the right by default. */
|
||||
#if defined(HAVE_NTGUI) || defined(MAC_OS) || defined(NS_IMPL_COCOA)
|
||||
/* MS-Windows and Mac OS X have scroll bars on the right by default. */
|
||||
Vdefault_frame_scroll_bars = Qright;
|
||||
#else
|
||||
Vdefault_frame_scroll_bars = Qleft;
|
||||
|
@ -4540,7 +4569,7 @@ You should set this variable to tell Emacs how your window manager
|
|||
handles focus, since there is no way in general for Emacs to find out
|
||||
automatically. */);
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
#if defined(HAVE_NTGUI) || defined(MAC_OS)
|
||||
#if defined(HAVE_NTGUI) || defined(MAC_OS) || defined(HAVE_NS)
|
||||
focus_follows_mouse = 0;
|
||||
#else
|
||||
focus_follows_mouse = 1;
|
||||
|
|
18
src/frame.h
18
src/frame.h
|
@ -50,7 +50,8 @@ enum output_method
|
|||
output_x_window,
|
||||
output_msdos_raw,
|
||||
output_w32,
|
||||
output_mac
|
||||
output_mac,
|
||||
output_ns
|
||||
};
|
||||
|
||||
enum vertical_scroll_bar_type
|
||||
|
@ -242,7 +243,7 @@ struct frame
|
|||
auto-resize-tool-bar is set to grow-only. */
|
||||
unsigned minimize_tool_bar_window_p : 1;
|
||||
|
||||
#if defined (USE_GTK) || defined (MAC_OS)
|
||||
#if defined (USE_GTK) || defined (HAVE_NS) || defined (MAC_OS)
|
||||
/* Nonzero means using a tool bar that comes from the toolkit. */
|
||||
int external_tool_bar;
|
||||
#endif
|
||||
|
@ -332,6 +333,7 @@ struct frame
|
|||
struct x_output *x; /* xterm.h */
|
||||
struct w32_output *w32; /* w32term.h */
|
||||
struct mac_output *mac; /* macterm.h */
|
||||
struct ns_output *ns; /* nsterm.h */
|
||||
EMACS_INT nothing;
|
||||
}
|
||||
output_data;
|
||||
|
@ -359,7 +361,7 @@ struct frame
|
|||
int menu_bar_lines;
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined (HAVE_NS) || defined (USE_GTK)
|
||||
/* Nonzero means using a menu bar that comes from the X toolkit. */
|
||||
unsigned int external_menu_bar : 1;
|
||||
#endif
|
||||
|
@ -519,6 +521,7 @@ typedef struct frame *FRAME_PTR;
|
|||
#define FRAME_W32_P(f) ((f)->output_method == output_w32)
|
||||
#define FRAME_MSDOS_P(f) ((f)->output_method == output_msdos_raw)
|
||||
#define FRAME_MAC_P(f) ((f)->output_method == output_mac)
|
||||
#define FRAME_NS_P(f) ((f)->output_method == output_ns)
|
||||
|
||||
/* FRAME_WINDOW_P tests whether the frame is a window, and is
|
||||
defined to be the predicate for the window system being used. */
|
||||
|
@ -532,6 +535,9 @@ typedef struct frame *FRAME_PTR;
|
|||
#ifdef MAC_OS
|
||||
#define FRAME_WINDOW_P(f) FRAME_MAC_P (f)
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
#define FRAME_WINDOW_P(f) FRAME_NS_P(f)
|
||||
#endif
|
||||
#ifndef FRAME_WINDOW_P
|
||||
#define FRAME_WINDOW_P(f) (0)
|
||||
#endif
|
||||
|
@ -570,7 +576,7 @@ typedef struct frame *FRAME_PTR;
|
|||
|
||||
/* Nonzero if this frame should display a tool bar
|
||||
in a way that does not use any text lines. */
|
||||
#if defined (USE_GTK) || defined (MAC_OS)
|
||||
#if defined (USE_GTK) || defined (HAVE_NS) || defined (MAC_OS)
|
||||
#define FRAME_EXTERNAL_TOOL_BAR(f) (f)->external_tool_bar
|
||||
#else
|
||||
#define FRAME_EXTERNAL_TOOL_BAR(f) 0
|
||||
|
@ -589,7 +595,7 @@ typedef struct frame *FRAME_PTR;
|
|||
/* Nonzero if this frame should display a menu bar
|
||||
in a way that does not use any text lines. */
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined (HAVE_NS) || defined (USE_GTK)
|
||||
#define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar
|
||||
#else
|
||||
#define FRAME_EXTERNAL_MENU_BAR(f) 0
|
||||
|
@ -1044,7 +1050,7 @@ extern Lisp_Object Qleft_fringe, Qright_fringe;
|
|||
extern Lisp_Object Qheight, Qwidth;
|
||||
extern Lisp_Object Qminibuffer, Qmodeline;
|
||||
extern Lisp_Object Qonly;
|
||||
extern Lisp_Object Qx, Qw32, Qmac, Qpc;
|
||||
extern Lisp_Object Qx, Qw32, Qmac, Qpc, Qns;
|
||||
extern Lisp_Object Qvisible;
|
||||
extern Lisp_Object Qdisplay_type;
|
||||
extern Lisp_Object Qbackground_mode;
|
||||
|
|
|
@ -482,7 +482,7 @@ static struct fringe_bitmap **fringe_bitmaps;
|
|||
static Lisp_Object *fringe_faces;
|
||||
static int max_fringe_bitmaps;
|
||||
|
||||
static int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
|
||||
int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
|
||||
|
||||
|
||||
/* Lookup bitmap number for symbol BITMAP.
|
||||
|
|
|
@ -420,7 +420,7 @@ extern int errno;
|
|||
# define host_self mach_host_self
|
||||
# endif
|
||||
|
||||
# ifdef NeXT
|
||||
# if defined(NeXT) || defined(RHAPSODY) || defined(DARWIN) || defined(MAC_OSX)
|
||||
# ifdef HAVE_MACH_MACH_H
|
||||
# include <mach/mach.h>
|
||||
# else
|
||||
|
@ -467,7 +467,7 @@ extern int errno;
|
|||
|
||||
/* Avoid static vars inside a function since in HPUX they dump as pure. */
|
||||
|
||||
# ifdef NeXT
|
||||
# if defined(NeXT) || defined(RHAPSODY) || defined(DARWIN) || defined(MAC_OSX)
|
||||
static processor_set_t default_set;
|
||||
static int getloadavg_initialized;
|
||||
# endif /* NeXT */
|
||||
|
@ -647,7 +647,8 @@ getloadavg (loadavg, nelem)
|
|||
|
||||
# endif /* __NetBSD__ */
|
||||
|
||||
# if !defined (LDAV_DONE) && defined (NeXT)
|
||||
# if !defined (LDAV_DONE) && ( defined (NeXT) || defined(RHAPSODY) \
|
||||
|| defined(DARWIN) || defined(MAC_OSX) )
|
||||
# define LDAV_DONE
|
||||
/* The NeXT code was adapted from iscreen 3.2. */
|
||||
|
||||
|
|
256
src/image.c
256
src/image.c
|
@ -131,6 +131,32 @@ typedef struct mac_bitmap_record Bitmap_Record;
|
|||
#endif /* MAC_OS */
|
||||
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef COLOR_TABLE_SUPPORT
|
||||
|
||||
typedef struct ns_bitmap_record Bitmap_Record;
|
||||
|
||||
#define GET_PIXEL(ximg, x, y) XGetPixel(ximg, x, y)
|
||||
#define NO_PIXMAP 0
|
||||
|
||||
#define RGB_PIXEL_COLOR unsigned long
|
||||
#define ZPixmap 0
|
||||
|
||||
#define PIX_MASK_RETAIN 0
|
||||
#define PIX_MASK_DRAW 1
|
||||
|
||||
#define FRAME_X_VISUAL FRAME_NS_DISPLAY_INFO(f)->visual
|
||||
#define x_defined_color(f, name, color_def, alloc) \
|
||||
ns_defined_color (f, name, color_def, alloc, 0)
|
||||
#define FRAME_X_SCREEN(f) 0
|
||||
#define DefaultDepthOfScreen(screen) ns_display_list->n_planes
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
|
||||
/* Search path for bitmap files. */
|
||||
|
||||
Lisp_Object Vx_bitmap_file_path;
|
||||
|
@ -403,6 +429,33 @@ mac_create_cg_image_from_image (f, img)
|
|||
#endif /* USE_CG_DRAWING */
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
XImagePtr
|
||||
XGetImage (Display *display, Pixmap pixmap, int x, int y,
|
||||
unsigned int width, unsigned int height,
|
||||
unsigned long plane_mask, int format)
|
||||
{
|
||||
/* PENDING: not sure what this function is supposed to do.. */
|
||||
ns_retain_object(pixmap);
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
/* use with imgs created by ns_image_for_XPM */
|
||||
unsigned long
|
||||
XGetPixel (XImagePtr ximage, int x, int y)
|
||||
{
|
||||
return ns_get_pixel(ximage, x, y);
|
||||
}
|
||||
|
||||
/* use with imgs created by ns_image_for_XPM; alpha set to 1;
|
||||
pixel is assumed to be in form RGB */
|
||||
void
|
||||
XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel)
|
||||
{
|
||||
ns_put_pixel(ximage, x, y, pixel);
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
|
||||
/* Functions to access the contents of a bitmap, given an id. */
|
||||
|
||||
|
@ -519,12 +572,23 @@ x_create_bitmap_from_data (f, bits, width, height)
|
|||
return -1;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
void *bitmap = ns_image_from_XBM(bits, width, height);
|
||||
if (!bitmap)
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
id = x_allocate_bitmap_record (f);
|
||||
#ifdef MAC_OS
|
||||
dpyinfo->bitmaps[id - 1].bitmap_data = (char *) xmalloc (height * width);
|
||||
bcopy (bits, dpyinfo->bitmaps[id - 1].bitmap_data, height * width);
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
dpyinfo->bitmaps[id - 1].img = bitmap;
|
||||
dpyinfo->bitmaps[id - 1].depth = 1;
|
||||
#endif
|
||||
|
||||
dpyinfo->bitmaps[id - 1].file = NULL;
|
||||
dpyinfo->bitmaps[id - 1].height = height;
|
||||
dpyinfo->bitmaps[id - 1].width = width;
|
||||
|
@ -552,6 +616,8 @@ x_create_bitmap_from_file (f, file)
|
|||
struct frame *f;
|
||||
Lisp_Object file;
|
||||
{
|
||||
Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
|
||||
|
||||
#ifdef MAC_OS
|
||||
return -1; /* MAC_TODO : bitmap support */
|
||||
#endif /* MAC_OS */
|
||||
|
@ -560,8 +626,26 @@ x_create_bitmap_from_file (f, file)
|
|||
return -1; /* W32_TODO : bitmap support */
|
||||
#endif /* HAVE_NTGUI */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
int id;
|
||||
void *bitmap = ns_image_from_file(file);
|
||||
|
||||
if (!bitmap)
|
||||
return -1;
|
||||
|
||||
|
||||
id = x_allocate_bitmap_record (f);
|
||||
dpyinfo->bitmaps[id - 1].img = bitmap;
|
||||
dpyinfo->bitmaps[id - 1].refcount = 1;
|
||||
dpyinfo->bitmaps[id - 1].file = (char *) xmalloc (SBYTES (file) + 1);
|
||||
dpyinfo->bitmaps[id - 1].depth = 1;
|
||||
dpyinfo->bitmaps[id - 1].height = ns_image_width(bitmap);
|
||||
dpyinfo->bitmaps[id - 1].width = ns_image_height(bitmap);
|
||||
strcpy (dpyinfo->bitmaps[id - 1].file, SDATA (file));
|
||||
return id;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
|
||||
unsigned int width, height;
|
||||
Pixmap bitmap;
|
||||
int xhot, yhot, result, id;
|
||||
|
@ -630,6 +714,10 @@ free_bitmap_record (dpyinfo, bm)
|
|||
bm->bitmap_data = NULL;
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
ns_release_object(bm->img);
|
||||
#endif
|
||||
|
||||
if (bm->file)
|
||||
{
|
||||
xfree (bm->file);
|
||||
|
@ -1407,7 +1495,8 @@ image_ascent (img, face, slice)
|
|||
because a typical font is `top-heavy' (due to the presence
|
||||
uppercase letters), so the image placement should err towards
|
||||
being top-heavy too. It also just generally looks better. */
|
||||
ascent = (height + face->font->ascent - face->font->descent + 1) / 2;
|
||||
ascent = (height + FONT_BASE(face->font)
|
||||
- FONT_DESCENT(face->font) + 1) / 2;
|
||||
#endif /* HAVE_NTGUI */
|
||||
}
|
||||
else
|
||||
|
@ -1476,6 +1565,14 @@ four_corners_best (ximg, corners, width, height)
|
|||
#define Free_Pixmap(display, pixmap) \
|
||||
DeleteObject (pixmap)
|
||||
|
||||
#elif defined (HAVE_NS)
|
||||
|
||||
#define Destroy_Image(ximg, dummy) \
|
||||
ns_release_object(ximg)
|
||||
|
||||
#define Free_Pixmap(display, pixmap) \
|
||||
ns_release_object(pixmap)
|
||||
|
||||
#else
|
||||
|
||||
#define Destroy_Image(ximg, dummy) \
|
||||
|
@ -1484,7 +1581,7 @@ four_corners_best (ximg, corners, width, height)
|
|||
#define Free_Pixmap(display, pixmap) \
|
||||
XFreePixmap (display, pixmap)
|
||||
|
||||
#endif /* HAVE_NTGUI */
|
||||
#endif /* !HAVE_NTGUI && !HAVE_NS */
|
||||
|
||||
|
||||
/* Return the `background' field of IMG. If IMG doesn't have one yet,
|
||||
|
@ -1607,6 +1704,10 @@ x_clear_image_1 (f, img, pixmap_p, mask_p, colors_p)
|
|||
{
|
||||
Free_Pixmap (FRAME_X_DISPLAY (f), img->pixmap);
|
||||
img->pixmap = NO_PIXMAP;
|
||||
#ifdef HAVE_NS
|
||||
if (img->background_valid)
|
||||
ns_free_indexed_color(img->background);
|
||||
#endif
|
||||
img->background_valid = 0;
|
||||
}
|
||||
|
||||
|
@ -2387,6 +2488,18 @@ x_create_x_image_and_pixmap (f, width, height, depth, ximg, pixmap)
|
|||
return 1;
|
||||
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
*pixmap = ns_image_for_XPM(width, height, depth);
|
||||
if (*pixmap == 0)
|
||||
{
|
||||
*ximg = NULL;
|
||||
image_error ("Unable to allocate NSImage for XPM pixmap", Qnil, Qnil);
|
||||
return 0;
|
||||
}
|
||||
*ximg = *pixmap;
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -2412,6 +2525,9 @@ x_destroy_x_image (ximg)
|
|||
#ifdef MAC_OS
|
||||
XDestroyImage (ximg);
|
||||
#endif /* MAC_OS */
|
||||
#ifdef HAVE_NS
|
||||
ns_release_object(ximg);
|
||||
#endif /* HAVE_NS */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2446,6 +2562,11 @@ x_put_x_image (f, ximg, pixmap, width, height)
|
|||
#ifdef MAC_OS
|
||||
xassert (ximg == pixmap);
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
xassert (ximg == pixmap);
|
||||
ns_retain_object(ximg);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -3499,6 +3620,10 @@ Create_Pixmap_From_Bitmap_Data (f, img, data, fg, bg, non_default_colors)
|
|||
/* If colors were specified, transfer the bitmap to a color one. */
|
||||
if (non_default_colors)
|
||||
convert_mono_to_color_image (f, img, fg, bg);
|
||||
|
||||
#elif defined (HAVE_NS)
|
||||
img->pixmap = ns_image_from_XBM(data, img->width, img->height);
|
||||
|
||||
#else
|
||||
img->pixmap
|
||||
= XCreatePixmapFromBitmapData (FRAME_X_DISPLAY (f),
|
||||
|
@ -3507,7 +3632,7 @@ Create_Pixmap_From_Bitmap_Data (f, img, data, fg, bg, non_default_colors)
|
|||
img->width, img->height,
|
||||
fg, bg,
|
||||
DefaultDepthOfScreen (FRAME_X_SCREEN (f)));
|
||||
#endif /* HAVE_NTGUI */
|
||||
#endif /* !HAVE_NTGUI && !HAVE_NS */
|
||||
}
|
||||
|
||||
|
||||
|
@ -3891,13 +4016,13 @@ xbm_load (f, img)
|
|||
XPM images
|
||||
***********************************************************************/
|
||||
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS)
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
|
||||
static int xpm_image_p P_ ((Lisp_Object object));
|
||||
static int xpm_load P_ ((struct frame *f, struct image *img));
|
||||
static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
|
||||
|
||||
#endif /* HAVE_XPM || MAC_OS */
|
||||
#endif /* HAVE_XPM || MAC_OS || HAVE_NS */
|
||||
|
||||
#ifdef HAVE_XPM
|
||||
#ifdef HAVE_NTGUI
|
||||
|
@ -3920,7 +4045,7 @@ static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
|
|||
#endif /* HAVE_NTGUI */
|
||||
#endif /* HAVE_XPM */
|
||||
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS)
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
/* The symbol `xpm' identifying XPM-format images. */
|
||||
|
||||
Lisp_Object Qxpm;
|
||||
|
@ -4247,7 +4372,7 @@ xpm_image_p (object)
|
|||
|| xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value)));
|
||||
}
|
||||
|
||||
#endif /* HAVE_XPM || MAC_OS */
|
||||
#endif /* HAVE_XPM || MAC_OS || HAVE_NS */
|
||||
|
||||
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
|
||||
int
|
||||
|
@ -4526,7 +4651,7 @@ xpm_load (f, img)
|
|||
|
||||
#endif /* HAVE_XPM */
|
||||
|
||||
#ifdef MAC_OS
|
||||
#if defined (MAC_OS) || ( defined (HAVE_NS) && !defined (HAVE_XPM) )
|
||||
|
||||
/* XPM support functions for Mac OS where libxpm is not available.
|
||||
Only XPM version 3 (without any extensions) is supported. */
|
||||
|
@ -4884,8 +5009,11 @@ xpm_load_image (f, img, contents, end)
|
|||
|
||||
if (!x_create_x_image_and_pixmap (f, width, height, 0,
|
||||
&ximg, &img->pixmap)
|
||||
#ifndef HAVE_NS
|
||||
|| !x_create_x_image_and_pixmap (f, width, height, 1,
|
||||
&mask_img, &img->mask))
|
||||
&mask_img, &img->mask)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
image_error ("Out of memory (%s)", img->spec, Qnil);
|
||||
goto error;
|
||||
|
@ -4905,9 +5033,14 @@ xpm_load_image (f, img, contents, end)
|
|||
XPutPixel (ximg, x, y,
|
||||
(INTEGERP (color_val) ? XINT (color_val)
|
||||
: FRAME_FOREGROUND_PIXEL (f)));
|
||||
#ifndef HAVE_NS
|
||||
XPutPixel (mask_img, x, y,
|
||||
(!EQ (color_val, Qt) ? PIX_MASK_DRAW
|
||||
: (have_mask = 1, PIX_MASK_RETAIN)));
|
||||
#else
|
||||
if (EQ(color_val, Qt))
|
||||
ns_set_alpha(ximg, x, y, 0);
|
||||
#endif
|
||||
}
|
||||
if (y + 1 < height)
|
||||
expect (',');
|
||||
|
@ -4922,6 +5055,7 @@ xpm_load_image (f, img, contents, end)
|
|||
|
||||
x_put_x_image (f, ximg, img->pixmap, width, height);
|
||||
x_destroy_x_image (ximg);
|
||||
#ifndef HAVE_NS
|
||||
if (have_mask)
|
||||
{
|
||||
/* Fill in the background_transparent field while we have the
|
||||
|
@ -4937,7 +5071,7 @@ xpm_load_image (f, img, contents, end)
|
|||
Free_Pixmap (FRAME_X_DISPLAY (f), img->mask);
|
||||
img->mask = NO_PIXMAP;
|
||||
}
|
||||
|
||||
#endif
|
||||
return 1;
|
||||
|
||||
failure:
|
||||
|
@ -5003,7 +5137,7 @@ xpm_load (f, img)
|
|||
return success_p;
|
||||
}
|
||||
|
||||
#endif /* MAC_OS */
|
||||
#endif /* MAC_OS || (HAVE_NS && !HAVE_XPM) */
|
||||
|
||||
|
||||
|
||||
|
@ -5273,6 +5407,9 @@ lookup_rgb_color (f, r, g, b)
|
|||
pixel = PALETTERGB (r >> 8, g >> 8, b >> 8);
|
||||
#endif /* HAVE_NTGUI */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
pixel = RGB_TO_ULONG (r >> 8, g >> 8, b >> 8);
|
||||
#endif /* HAVE_NS */
|
||||
return pixel;
|
||||
}
|
||||
|
||||
|
@ -5378,7 +5515,7 @@ x_to_xcolors (f, img, rgb_p)
|
|||
p->pixel = GET_PIXEL (ximg, x, y);
|
||||
if (rgb_p)
|
||||
{
|
||||
#ifdef MAC_OS
|
||||
#if defined (MAC_OS) || defined (HAVE_NS)
|
||||
p->red = RED16_FROM_ULONG (p->pixel);
|
||||
p->green = GREEN16_FROM_ULONG (p->pixel);
|
||||
p->blue = BLUE16_FROM_ULONG (p->pixel);
|
||||
|
@ -5459,8 +5596,8 @@ x_from_xcolors (f, img, colors)
|
|||
XColor *colors;
|
||||
{
|
||||
int x, y;
|
||||
XImagePtr oimg;
|
||||
Pixmap pixmap;
|
||||
XImagePtr oimg = NULL;
|
||||
Pixmap pixmap = NULL;
|
||||
XColor *p;
|
||||
|
||||
init_color_table ();
|
||||
|
@ -5673,6 +5810,8 @@ x_disable_image (f, img)
|
|||
Display *dpy = FRAME_X_DISPLAY (f);
|
||||
GC gc;
|
||||
|
||||
#ifndef HAVE_NS //TODO: NS support, however this not needed for toolbars
|
||||
|
||||
#ifdef MAC_OS
|
||||
#define MaskForeground(f) PIX_MASK_DRAW
|
||||
#else
|
||||
|
@ -5697,6 +5836,7 @@ x_disable_image (f, img)
|
|||
img->width - 1, 0);
|
||||
XFreeGC (dpy, gc);
|
||||
}
|
||||
#endif /* !HAVE_NS */
|
||||
#else
|
||||
HDC hdc, bmpdc;
|
||||
HGDIOBJ prev;
|
||||
|
@ -5762,11 +5902,13 @@ x_build_heuristic_mask (f, img, how)
|
|||
}
|
||||
|
||||
#ifndef HAVE_NTGUI
|
||||
#ifndef HAVE_NS
|
||||
/* Create an image and pixmap serving as mask. */
|
||||
rc = x_create_x_image_and_pixmap (f, img->width, img->height, 1,
|
||||
&mask_img, &img->mask);
|
||||
if (!rc)
|
||||
return 0;
|
||||
#endif /* !HAVE_NS */
|
||||
|
||||
/* Get the X image of IMG->pixmap. */
|
||||
ximg = XGetImage (FRAME_X_DISPLAY (f), img->pixmap, 0, 0,
|
||||
|
@ -5820,16 +5962,21 @@ x_build_heuristic_mask (f, img, how)
|
|||
#ifndef HAVE_NTGUI
|
||||
for (y = 0; y < img->height; ++y)
|
||||
for (x = 0; x < img->width; ++x)
|
||||
#ifndef HAVE_NS
|
||||
XPutPixel (mask_img, x, y, (XGetPixel (ximg, x, y) != bg
|
||||
? PIX_MASK_DRAW : PIX_MASK_RETAIN));
|
||||
|
||||
#else
|
||||
if (XGetPixel (ximg, x, y) == bg)
|
||||
ns_set_alpha(ximg, x, y, 0);
|
||||
#endif /* HAVE_NS */
|
||||
#ifndef HAVE_NS
|
||||
/* Fill in the background_transparent field while we have the mask handy. */
|
||||
image_background_transparent (img, f, mask_img);
|
||||
|
||||
/* Put mask_img into img->mask. */
|
||||
x_put_x_image (f, mask_img, img->mask, img->width, img->height);
|
||||
x_destroy_x_image (mask_img);
|
||||
|
||||
#endif /* !HAVE_NS */
|
||||
#else
|
||||
for (y = 0; y < img->height; ++y)
|
||||
for (x = 0; x < img->width; ++x)
|
||||
|
@ -6280,7 +6427,7 @@ pbm_load (f, img)
|
|||
PNG
|
||||
***********************************************************************/
|
||||
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS)
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
|
||||
/* Function prototypes. */
|
||||
|
||||
|
@ -6352,7 +6499,7 @@ png_image_p (object)
|
|||
return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1;
|
||||
}
|
||||
|
||||
#endif /* HAVE_PNG || MAC_OS */
|
||||
#endif /* HAVE_PNG || MAC_OS || HAVE_NS */
|
||||
|
||||
|
||||
#ifdef HAVE_PNG
|
||||
|
@ -6912,6 +7059,17 @@ png_load (f, img)
|
|||
}
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
static int
|
||||
png_load (struct frame *f, struct image *img)
|
||||
{
|
||||
return ns_load_image(f, img,
|
||||
image_spec_value (img->spec, QCfile, NULL),
|
||||
image_spec_value (img->spec, QCdata, NULL));
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
|
||||
#endif /* !HAVE_PNG */
|
||||
|
||||
|
||||
|
@ -6920,7 +7078,7 @@ png_load (f, img)
|
|||
JPEG
|
||||
***********************************************************************/
|
||||
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS)
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
|
||||
static int jpeg_image_p P_ ((Lisp_Object object));
|
||||
static int jpeg_load P_ ((struct frame *f, struct image *img));
|
||||
|
@ -6991,7 +7149,7 @@ jpeg_image_p (object)
|
|||
return fmt[JPEG_FILE].count + fmt[JPEG_DATA].count == 1;
|
||||
}
|
||||
|
||||
#endif /* HAVE_JPEG || MAC_OS */
|
||||
#endif /* HAVE_JPEG || MAC_OS || HAVE_NS */
|
||||
|
||||
#ifdef HAVE_JPEG
|
||||
|
||||
|
@ -7491,6 +7649,16 @@ jpeg_load (f, img)
|
|||
}
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
static int
|
||||
jpeg_load (struct frame *f, struct image *img)
|
||||
{
|
||||
return ns_load_image(f, img,
|
||||
image_spec_value (img->spec, QCfile, NULL),
|
||||
image_spec_value (img->spec, QCdata, NULL));
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#endif /* !HAVE_JPEG */
|
||||
|
||||
|
||||
|
@ -7499,7 +7667,7 @@ jpeg_load (f, img)
|
|||
TIFF
|
||||
***********************************************************************/
|
||||
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS)
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
|
||||
static int tiff_image_p P_ ((Lisp_Object object));
|
||||
static int tiff_load P_ ((struct frame *f, struct image *img));
|
||||
|
@ -7569,7 +7737,7 @@ tiff_image_p (object)
|
|||
return fmt[TIFF_FILE].count + fmt[TIFF_DATA].count == 1;
|
||||
}
|
||||
|
||||
#endif /* HAVE_TIFF || MAC_OS */
|
||||
#endif /* HAVE_TIFF || MAC_OS || HAVE_NS */
|
||||
|
||||
#ifdef HAVE_TIFF
|
||||
|
||||
|
@ -7916,6 +8084,16 @@ tiff_load (f, img)
|
|||
}
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
static int
|
||||
tiff_load (struct frame *f, struct image *img)
|
||||
{
|
||||
return ns_load_image(f, img,
|
||||
image_spec_value (img->spec, QCfile, NULL),
|
||||
image_spec_value (img->spec, QCdata, NULL));
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#endif /* !HAVE_TIFF */
|
||||
|
||||
|
||||
|
@ -7924,7 +8102,7 @@ tiff_load (f, img)
|
|||
GIF
|
||||
***********************************************************************/
|
||||
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS)
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
|
||||
static int gif_image_p P_ ((Lisp_Object object));
|
||||
static int gif_load P_ ((struct frame *f, struct image *img));
|
||||
|
@ -8553,6 +8731,16 @@ gif_load (f, img)
|
|||
}
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
static int
|
||||
gif_load (struct frame *f, struct image *img)
|
||||
{
|
||||
return ns_load_image(f, img,
|
||||
image_spec_value (img->spec, QCfile, NULL),
|
||||
image_spec_value (img->spec, QCdata, NULL));
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#endif /* HAVE_GIF */
|
||||
|
||||
|
||||
|
@ -9335,27 +9523,27 @@ of `image-library-alist', which see). */)
|
|||
if (CONSP (tested))
|
||||
return XCDR (tested);
|
||||
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS)
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
if (EQ (type, Qxpm))
|
||||
return CHECK_LIB_AVAILABLE (&xpm_type, init_xpm_functions, libraries);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS)
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
if (EQ (type, Qjpeg))
|
||||
return CHECK_LIB_AVAILABLE (&jpeg_type, init_jpeg_functions, libraries);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS)
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
if (EQ (type, Qtiff))
|
||||
return CHECK_LIB_AVAILABLE (&tiff_type, init_tiff_functions, libraries);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS)
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
if (EQ (type, Qgif))
|
||||
return CHECK_LIB_AVAILABLE (&gif_type, init_gif_functions, libraries);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS)
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
if (EQ (type, Qpng))
|
||||
return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries);
|
||||
#endif
|
||||
|
@ -9480,31 +9668,31 @@ non-numeric, there is no explicit limit on the size of images. */);
|
|||
staticpro (&QCpt_height);
|
||||
#endif /* HAVE_GHOSTSCRIPT */
|
||||
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS)
|
||||
#if defined (HAVE_XPM) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
Qxpm = intern ("xpm");
|
||||
staticpro (&Qxpm);
|
||||
ADD_IMAGE_TYPE (Qxpm);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS)
|
||||
#if defined (HAVE_JPEG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
Qjpeg = intern ("jpeg");
|
||||
staticpro (&Qjpeg);
|
||||
ADD_IMAGE_TYPE (Qjpeg);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS)
|
||||
#if defined (HAVE_TIFF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
Qtiff = intern ("tiff");
|
||||
staticpro (&Qtiff);
|
||||
ADD_IMAGE_TYPE (Qtiff);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS)
|
||||
#if defined (HAVE_GIF) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
Qgif = intern ("gif");
|
||||
staticpro (&Qgif);
|
||||
ADD_IMAGE_TYPE (Qgif);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS)
|
||||
#if defined (HAVE_PNG) || defined (MAC_OS) || defined (HAVE_NS)
|
||||
Qpng = intern ("png");
|
||||
staticpro (&Qpng);
|
||||
ADD_IMAGE_TYPE (Qpng);
|
||||
|
|
|
@ -80,6 +80,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "macterm.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
extern Lisp_Object Qsuper;
|
||||
#endif
|
||||
|
||||
#ifndef USE_CRT_DLL
|
||||
extern int errno;
|
||||
#endif
|
||||
|
@ -4147,7 +4152,8 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (MAC_OS)
|
||||
#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (HAVE_NS)
|
||||
else if (event->kind == DELETE_WINDOW_EVENT)
|
||||
{
|
||||
/* Make an event (delete-frame (FRAME)). */
|
||||
|
@ -4156,7 +4162,8 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
|
|||
kbd_fetch_ptr = event + 1;
|
||||
}
|
||||
#endif
|
||||
#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (MAC_OS)
|
||||
#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (HAVE_NS)
|
||||
else if (event->kind == ICONIFY_EVENT)
|
||||
{
|
||||
/* Make an event (iconify-frame (FRAME)). */
|
||||
|
@ -4179,7 +4186,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
|
|||
kbd_fetch_ptr = event + 1;
|
||||
}
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined(HAVE_NS) || defined (USE_GTK)
|
||||
else if (event->kind == MENU_BAR_ACTIVATE_EVENT)
|
||||
{
|
||||
kbd_fetch_ptr = event + 1;
|
||||
|
@ -4289,7 +4296,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
|
|||
obj = make_lispy_event (event);
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined(MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined(HAVE_NS) || defined (USE_GTK)
|
||||
/* If this was a menu selection, then set the flag to inhibit
|
||||
writing to last_nonmenu_event. Don't do this if the event
|
||||
we're returning is (menu-bar), though; that indicates the
|
||||
|
@ -5643,7 +5650,7 @@ make_lispy_event (event)
|
|||
if (event->kind == MOUSE_CLICK_EVENT)
|
||||
{
|
||||
struct frame *f = XFRAME (event->frame_or_window);
|
||||
#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
|
||||
#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) && ! defined (HAVE_NS)
|
||||
int row, column;
|
||||
#endif
|
||||
|
||||
|
@ -5652,7 +5659,7 @@ make_lispy_event (event)
|
|||
if (! FRAME_LIVE_P (f))
|
||||
return Qnil;
|
||||
|
||||
#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
|
||||
#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) && ! defined (HAVE_NS)
|
||||
/* EVENT->x and EVENT->y are frame-relative pixel
|
||||
coordinates at this place. Under old redisplay, COLUMN
|
||||
and ROW are set to frame relative glyph coordinates
|
||||
|
@ -5712,7 +5719,7 @@ make_lispy_event (event)
|
|||
|
||||
return Fcons (item, Fcons (position, Qnil));
|
||||
}
|
||||
#endif /* not USE_X_TOOLKIT && not USE_GTK */
|
||||
#endif /* not USE_X_TOOLKIT && not USE_GTK && not HAVE_NS */
|
||||
|
||||
position = make_lispy_position (f, &event->x, &event->y,
|
||||
event->timestamp);
|
||||
|
@ -6092,7 +6099,7 @@ make_lispy_event (event)
|
|||
#endif /* HAVE_MOUSE */
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined(HAVE_NS) || defined (USE_GTK)
|
||||
case MENU_BAR_EVENT:
|
||||
if (EQ (event->arg, event->frame_or_window))
|
||||
/* This is the prefix key. We translate this to
|
||||
|
@ -7305,6 +7312,10 @@ tty_read_avail_input (struct terminal *terminal,
|
|||
void
|
||||
handle_async_input ()
|
||||
{
|
||||
#ifdef BSD4_1
|
||||
extern int select_alarmed;
|
||||
#endif
|
||||
|
||||
interrupt_input_pending = 0;
|
||||
|
||||
while (1)
|
||||
|
@ -7317,6 +7328,9 @@ handle_async_input ()
|
|||
if (nread <= 0)
|
||||
break;
|
||||
|
||||
#ifdef BSD4_1
|
||||
select_alarmed = 1; /* Force the select emulator back to life */
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7335,6 +7349,10 @@ input_available_signal (signo)
|
|||
signal (signo, input_available_signal);
|
||||
#endif /* USG */
|
||||
|
||||
#ifdef BSD4_1
|
||||
sigisheld (SIGIO);
|
||||
#endif
|
||||
|
||||
#ifdef SYNC_INPUT
|
||||
interrupt_input_pending = 1;
|
||||
#else
|
||||
|
@ -7348,6 +7366,9 @@ input_available_signal (signo)
|
|||
handle_async_input ();
|
||||
#endif
|
||||
|
||||
#ifdef BSD4_1
|
||||
sigfree ();
|
||||
#endif
|
||||
errno = old_errno;
|
||||
}
|
||||
#endif /* SIGIO */
|
||||
|
@ -7975,10 +7996,15 @@ parse_menu_item (item, notreal, inmenubar)
|
|||
/* With the introduction of where_is_cache, the computation
|
||||
of equivalent key bindings is sufficiently fast that we
|
||||
do not need to cache it here any more. */
|
||||
/* CHECK_IMPURE (start);
|
||||
XSETCDR (start, Fcons (Fcons (Qnil, Qnil), XCDR (start)));
|
||||
cachelist = XCAR (XCDR (start)); */
|
||||
/*PENDING: under NS this effect does not hold, perhaps due to the
|
||||
modifier-preference changes to where-is-internal.. */
|
||||
#ifdef HAVE_NS
|
||||
CHECK_IMPURE (start);
|
||||
XSETCDR (start, Fcons (Fcons (Qnil, Qnil), XCDR (start)));
|
||||
cachelist = XCAR (XCDR (start));
|
||||
#else
|
||||
cachelist = Fcons (Qnil, Qnil);
|
||||
#endif
|
||||
newcache = 1;
|
||||
tem = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
|
||||
if (!NILP (keyhint))
|
||||
|
@ -8044,7 +8070,12 @@ parse_menu_item (item, notreal, inmenubar)
|
|||
&& SYMBOLP (XSYMBOL (def)->function)
|
||||
&& ! NILP (Fget (def, Qmenu_alias)))
|
||||
def = XSYMBOL (def)->function;
|
||||
#ifdef HAVE_NS
|
||||
/* prefer 'super' bindings */
|
||||
tem = Fwhere_is_internal (def, Qnil, Qsuper, Qt, Qt);
|
||||
#else
|
||||
tem = Fwhere_is_internal (def, Qnil, Qt, Qnil, Qt);
|
||||
#endif
|
||||
XSETCAR (cachelist, tem);
|
||||
if (NILP (tem))
|
||||
{
|
||||
|
@ -8077,7 +8108,7 @@ parse_menu_item (item, notreal, inmenubar)
|
|||
if (newcache && !NILP (tem))
|
||||
{
|
||||
tem = concat2 (build_string (" "), tem);
|
||||
// tem = concat3 (build_string (" ("), tem, build_string (")"));
|
||||
/* tem = concat3 (build_string (" ("), tem, build_string (")")); */
|
||||
XSETCDR (cachelist, tem);
|
||||
}
|
||||
|
||||
|
|
|
@ -314,8 +314,7 @@ extern Lisp_Object unuse_menu_items P_ ((Lisp_Object dummy));
|
|||
confined to an extended version of this with sections of code below
|
||||
using it unconditionally. */
|
||||
#ifndef HAVE_NTGUI
|
||||
#ifdef USE_GTK
|
||||
/* gtk just uses utf-8. */
|
||||
#if defined (USE_GTK) || defined (HAVE_NS)
|
||||
# define ENCODE_MENU_STRING(str) ENCODE_UTF_8 (str)
|
||||
#elif defined HAVE_X_I18N
|
||||
#define ENCODE_MENU_STRING(str) ENCODE_SYSTEM (str)
|
||||
|
@ -325,6 +324,56 @@ extern Lisp_Object unuse_menu_items P_ ((Lisp_Object dummy));
|
|||
#else /* HAVE_NTGUI */
|
||||
#define ENCODE_MENU_STRING(str) (str)
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_NS) || defined (HAVE_NTGUI)
|
||||
|
||||
typedef void * XtPointer;
|
||||
typedef unsigned char Boolean;
|
||||
|
||||
/* Definitions copied from lwlib.h */
|
||||
|
||||
enum button_type
|
||||
{
|
||||
BUTTON_TYPE_NONE,
|
||||
BUTTON_TYPE_TOGGLE,
|
||||
BUTTON_TYPE_RADIO
|
||||
};
|
||||
|
||||
/* This structure is based on the one in ../lwlib/lwlib.h, with unused portions
|
||||
removed. No term uses these. */
|
||||
typedef struct _widget_value
|
||||
{
|
||||
/* name of widget */
|
||||
Lisp_Object lname;
|
||||
char* name;
|
||||
/* value (meaning depend on widget type) */
|
||||
char* value;
|
||||
/* keyboard equivalent. no implications for XtTranslations */
|
||||
Lisp_Object lkey;
|
||||
char* key;
|
||||
/* Help string or nil if none.
|
||||
GC finds this string through the frame's menu_bar_vector
|
||||
or through menu_items. */
|
||||
Lisp_Object help;
|
||||
/* true if enabled */
|
||||
Boolean enabled;
|
||||
/* true if selected */
|
||||
Boolean selected;
|
||||
/* The type of a button. */
|
||||
enum button_type button_type;
|
||||
#if defined (HAVE_NTGUI)
|
||||
/* true if menu title */
|
||||
Boolean title;
|
||||
#endif
|
||||
/* Contents of the sub-widgets, also selected slot for checkbox */
|
||||
struct _widget_value* contents;
|
||||
/* data passed to callback */
|
||||
XtPointer call_data;
|
||||
/* next one in the list */
|
||||
struct _widget_value* next;
|
||||
} widget_value;
|
||||
#endif
|
||||
|
||||
|
||||
/* Macros for dealing with lispy events. */
|
||||
|
||||
|
|
68
src/keymap.c
68
src/keymap.c
|
@ -111,6 +111,10 @@ extern Lisp_Object meta_prefix_char;
|
|||
|
||||
extern Lisp_Object Voverriding_local_map;
|
||||
|
||||
#ifdef HAVE_NS
|
||||
extern Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper;
|
||||
#endif
|
||||
|
||||
/* Hash table used to cache a reverse-map to speed up calls to where-is. */
|
||||
static Lisp_Object where_is_cache;
|
||||
/* Which keymaps are reverse-stored in the cache. */
|
||||
|
@ -2621,6 +2625,41 @@ ascii_sequence_p (seq)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#ifdef HAVE_NS
|
||||
int lisp_to_mod(Lisp_Object lmod)
|
||||
/* -------------------------------------------------------------------------
|
||||
Convert lisp symbol to emacs modifier code.
|
||||
------------------------------------------------------------------------- */
|
||||
{
|
||||
if (EQ(lmod, Qmeta))
|
||||
return meta_modifier;
|
||||
else if (EQ(lmod, Qsuper))
|
||||
return super_modifier;
|
||||
else if (EQ(lmod, Qcontrol))
|
||||
return ctrl_modifier;
|
||||
else if (EQ(lmod, Qalt))
|
||||
return alt_modifier;
|
||||
else if (EQ(lmod, Qhyper))
|
||||
return hyper_modifier;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return non-zero if SEQ starts w/a char modified by given modifier only. */
|
||||
static int
|
||||
modifier_sequence_p (Lisp_Object seq, Lisp_Object modifier)
|
||||
{
|
||||
Lisp_Object idx, elt;
|
||||
|
||||
if (XINT (Flength (seq)) == 0)
|
||||
return 0;
|
||||
XSETFASTINT(idx, 0);
|
||||
elt = Faref(seq, idx);
|
||||
|
||||
return (XUINT(elt) & (CHAR_MODIFIER_MASK ^ shift_modifier))
|
||||
== lisp_to_mod(modifier);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* where-is - finding a command in a set of keymaps. */
|
||||
|
||||
|
@ -2803,6 +2842,14 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
|
|||
we find. */
|
||||
if (EQ (firstonly, Qnon_ascii))
|
||||
RETURN_UNGCPRO (sequence);
|
||||
#ifdef HAVE_NS
|
||||
/* respond to modifier preference */
|
||||
else if ((EQ (firstonly, Qalt) || EQ (firstonly, Qcontrol)
|
||||
|| EQ (firstonly, Qhyper) || EQ (firstonly, Qmeta)
|
||||
|| EQ (firstonly, Qsuper)))
|
||||
if (modifier_sequence_p(sequence, firstonly))
|
||||
RETURN_UNGCPRO (sequence);
|
||||
#endif
|
||||
else if (!NILP (firstonly) && ascii_sequence_p (sequence))
|
||||
RETURN_UNGCPRO (sequence);
|
||||
|
||||
|
@ -2836,6 +2883,10 @@ If KEYMAP is a list of keymaps, search only those keymaps.
|
|||
|
||||
If optional 3rd arg FIRSTONLY is non-nil, return the first key sequence found,
|
||||
rather than a list of all possible key sequences.
|
||||
#ifdef HAVE_NS
|
||||
If FIRSTONLY is the symbol for a modifier key, return the first binding found,
|
||||
that is modified by that modifier only.
|
||||
#endif
|
||||
If FIRSTONLY is the symbol `non-ascii', return the first binding found,
|
||||
no matter what it is.
|
||||
If FIRSTONLY has another non-nil value, prefer sequences of ASCII characters
|
||||
|
@ -2909,10 +2960,19 @@ remapped command in the returned list. */)
|
|||
for (i = n - 1; i >= 0; --i)
|
||||
if (EQ (shadow_lookup (keymaps, defns[i], Qnil), definition))
|
||||
{
|
||||
if (ascii_sequence_p (defns[i]))
|
||||
break;
|
||||
else if (j < 0)
|
||||
j = i;
|
||||
#ifdef HAVE_NS
|
||||
if ((EQ (firstonly, Qalt) || EQ (firstonly, Qcontrol)
|
||||
|| EQ (firstonly, Qhyper) || EQ (firstonly, Qmeta)
|
||||
|| EQ (firstonly, Qsuper))
|
||||
&& modifier_sequence_p(defns[i], firstonly))
|
||||
break;
|
||||
else if (EQ (firstonly, Qt) && ascii_sequence_p (defns[i]))
|
||||
#else
|
||||
if (ascii_sequence_p (defns[i]))
|
||||
#endif
|
||||
break;
|
||||
else if (j < 0)
|
||||
j = i;
|
||||
}
|
||||
|
||||
result = i >= 0 ? defns[i] : (j >= 0 ? defns[j] : Qnil);
|
||||
|
|
|
@ -28,6 +28,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define P_(proto) ()
|
||||
#endif
|
||||
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
/* This conflicts with functions in the GNUstep libraries. */
|
||||
#define hash_remove emacs_hash_remove
|
||||
#endif /* NS_IMPL_GNUSTEP */
|
||||
|
||||
#if 0
|
||||
/* Define this temporarily to hunt a bug. If defined, the size of
|
||||
strings is redundantly recorded in sdata structures so that it can
|
||||
|
@ -157,7 +162,7 @@ extern void die P_((const char *, const char *, int)) NO_RETURN;
|
|||
#endif
|
||||
|
||||
/* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8. */
|
||||
#if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined MAC_OSX
|
||||
#if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined MAC_OSX || defined(NS_IMPL_COCOA)
|
||||
/* We also need to be able to specify mult-of-8 alignment on static vars. */
|
||||
# if defined DECL_ALIGN
|
||||
/* We currently do not support USE_LSB_TAG with a union Lisp_Object. */
|
||||
|
|
|
@ -4095,7 +4095,7 @@ init_lread ()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if (!(defined(WINDOWSNT) || (defined(HAVE_CARBON))))
|
||||
#if (!(defined(WINDOWSNT) || (defined(HAVE_CARBON)) || (defined(HAVE_NS))))
|
||||
/* When Emacs is invoked over network shares on NT, PATH_LOADSEARCH is
|
||||
almost never correct, thereby causing a warning to be printed out that
|
||||
confuses users. Since PATH_LOADSEARCH is always overridden by the
|
||||
|
@ -4125,7 +4125,7 @@ init_lread ()
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif /* !(WINDOWSNT || HAVE_CARBON) */
|
||||
#endif /* !(WINDOWSNT || HAVE_CARBON || HAVE_NS) */
|
||||
|
||||
/* If the EMACSLOADPATH environment variable is set, use its value.
|
||||
This doesn't apply if we're dumping. */
|
||||
|
|
74
src/menu.c
74
src/menu.c
|
@ -36,6 +36,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "xterm.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_GTK
|
||||
#include "gtkutil.h"
|
||||
#endif
|
||||
|
@ -440,7 +444,7 @@ single_menu_item (key, item, dummy, skp_v)
|
|||
XVECTOR (item_properties)->contents[ITEM_PROPERTY_SELECTED],
|
||||
XVECTOR (item_properties)->contents[ITEM_PROPERTY_HELP]);
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI)
|
||||
#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI)
|
||||
/* Display a submenu using the toolkit. */
|
||||
if (! (NILP (map) || NILP (enabled)))
|
||||
{
|
||||
|
@ -580,7 +584,7 @@ parse_single_submenu (item_key, item_name, maps)
|
|||
}
|
||||
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI)
|
||||
#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI)
|
||||
|
||||
/* Allocate a widget_value, blocking input. */
|
||||
|
||||
|
@ -956,7 +960,71 @@ find_and_call_menu_selection (f, menu_bar_items_used, vector, client_data)
|
|||
}
|
||||
}
|
||||
|
||||
#endif /* USE_X_TOOLKIT || USE_GTK || HAVE_NTGUI */
|
||||
#endif /* USE_X_TOOLKIT || USE_GTK || HAVE_NS || HAVE_NTGUI */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
/* As above, but return the menu selection instead of storing in kb buffer.
|
||||
If keymaps==1, return full prefixes to selection. */
|
||||
Lisp_Object
|
||||
find_and_return_menu_selection (FRAME_PTR f, int keymaps, void *client_data)
|
||||
{
|
||||
Lisp_Object prefix, entry;
|
||||
int i;
|
||||
Lisp_Object *subprefix_stack;
|
||||
int submenu_depth = 0;
|
||||
|
||||
prefix = entry = Qnil;
|
||||
i = 0;
|
||||
subprefix_stack =
|
||||
(Lisp_Object *)alloca(menu_items_used * sizeof (Lisp_Object));
|
||||
|
||||
while (i < menu_items_used)
|
||||
{
|
||||
if (EQ (XVECTOR (menu_items)->contents[i], Qnil))
|
||||
{
|
||||
subprefix_stack[submenu_depth++] = prefix;
|
||||
prefix = entry;
|
||||
i++;
|
||||
}
|
||||
else if (EQ (XVECTOR (menu_items)->contents[i], Qlambda))
|
||||
{
|
||||
prefix = subprefix_stack[--submenu_depth];
|
||||
i++;
|
||||
}
|
||||
else if (EQ (XVECTOR (menu_items)->contents[i], Qt))
|
||||
{
|
||||
prefix
|
||||
= XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX];
|
||||
i += MENU_ITEMS_PANE_LENGTH;
|
||||
}
|
||||
/* Ignore a nil in the item list.
|
||||
It's meaningful only for dialog boxes. */
|
||||
else if (EQ (XVECTOR (menu_items)->contents[i], Qquote))
|
||||
i += 1;
|
||||
else
|
||||
{
|
||||
entry
|
||||
= XVECTOR (menu_items)->contents[i + MENU_ITEMS_ITEM_VALUE];
|
||||
if ((int) (EMACS_INT)client_data == i)
|
||||
{
|
||||
if (keymaps != 0)
|
||||
{
|
||||
int j;
|
||||
|
||||
entry = Fcons (entry, Qnil);
|
||||
if (!NILP (prefix))
|
||||
entry = Fcons (prefix, entry);
|
||||
for (j = submenu_depth - 1; j >= 0; j--)
|
||||
if (!NILP (subprefix_stack[j]))
|
||||
entry = Fcons (subprefix_stack[j], entry);
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
i += MENU_ITEMS_ITEM_LENGTH;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
syms_of_menu ()
|
||||
|
|
2668
src/nsfns.m
Normal file
2668
src/nsfns.m
Normal file
File diff suppressed because it is too large
Load diff
208
src/nsgui.h
Normal file
208
src/nsgui.h
Normal file
|
@ -0,0 +1,208 @@
|
|||
/* Definitions and headers for communication on the NeXT/Open/GNUstep API.
|
||||
Copyright (C) 1995, 2005, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifndef __NSGUI_H__
|
||||
#define __NSGUI_H__
|
||||
|
||||
/* this gets included from a couple of the plain (non-NS) .c files */
|
||||
#ifdef __OBJC__
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
#ifdef Z
|
||||
#warning "Z is defined. If you get a later parse error in a header, check that buffer.h or other files #define-ing Z are not included."
|
||||
#endif /* Z */
|
||||
#define Cursor FooFoo
|
||||
#undef init_process
|
||||
#endif /* NS_IMPL_COCOA */
|
||||
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
#undef hash_remove
|
||||
#endif
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
#define hash_remove emacs_hash_remove
|
||||
#endif
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
#undef Cursor
|
||||
#define init_process emacs_init_process
|
||||
#endif /* NS_IMPL_COCOA */
|
||||
#import <Foundation/NSDistantObject.h>
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
#include <AvailabilityMacros.h>
|
||||
#endif /* NS_IMPL_COCOA */
|
||||
|
||||
#endif /* __OBJC__ */
|
||||
|
||||
|
||||
/* menu-related */
|
||||
#define free_widget_value(wv) xfree (wv)
|
||||
#define malloc_widget_value() ((widget_value *) memset (xmalloc \
|
||||
(sizeof (widget_value)), 0, sizeof (widget_value)))
|
||||
|
||||
/* Emulate XCharStruct. */
|
||||
typedef struct _XCharStruct
|
||||
{
|
||||
int rbearing;
|
||||
int lbearing;
|
||||
int width;
|
||||
int ascent;
|
||||
int descent;
|
||||
} XCharStruct;
|
||||
|
||||
/* 23: Fake tructure from Xlib.h to represent two-byte characters. */
|
||||
#ifndef __OBJC__
|
||||
typedef unsigned short unichar;
|
||||
#endif
|
||||
typedef unichar XChar2b;
|
||||
|
||||
#define STORE_XCHAR2B(chp, b1, b2) \
|
||||
(*(chp) = ((XChar2b)((((b1) & 0x00ff) << 8) | ((b2) & 0x00ff))))
|
||||
|
||||
#define XCHAR2B_BYTE1(chp) \
|
||||
(((*chp) & 0xff00) >> 8)
|
||||
|
||||
#define XCHAR2B_BYTE2(chp) \
|
||||
((*chp) & 0x00ff)
|
||||
|
||||
#define FACE_DEFAULT (~0)
|
||||
|
||||
|
||||
/* PENDING: xfaces requires these structures, but the question is are we
|
||||
forced to use them? */
|
||||
typedef struct _XGCValues
|
||||
{
|
||||
#ifdef __OBJC__
|
||||
NSColor *foreground;
|
||||
NSColor *background;
|
||||
struct ns_font *font;
|
||||
#else
|
||||
void *foreground;
|
||||
void *background;
|
||||
void *font;
|
||||
#endif
|
||||
} XGCValues;
|
||||
|
||||
typedef XGCValues * GC;
|
||||
|
||||
#define GCForeground 0x01
|
||||
#define GCBackground 0x02
|
||||
#define GCFont 0x03
|
||||
|
||||
#ifdef __OBJC__
|
||||
typedef id Pixmap;
|
||||
#else
|
||||
typedef void *Pixmap;
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
typedef NSCursor * Cursor;
|
||||
#else
|
||||
typedef void *Cursor;
|
||||
#endif
|
||||
|
||||
#define No_Cursor (0)
|
||||
|
||||
#ifdef __OBJC__
|
||||
typedef NSColor * Color;
|
||||
#else
|
||||
typedef void * Color;
|
||||
#endif
|
||||
typedef int Window;
|
||||
typedef int Display;
|
||||
|
||||
/* Xism */
|
||||
typedef Lisp_Object XrmDatabase;
|
||||
|
||||
|
||||
/* 23: some sort of attempt to normalize rectangle handling.. seems a bit much
|
||||
for what is accomplished */
|
||||
typedef struct {
|
||||
int x, y;
|
||||
unsigned width, height;
|
||||
} XRectangle;
|
||||
|
||||
#ifndef __OBJC__
|
||||
typedef struct _NSPoint { float x, y; } NSPoint;
|
||||
typedef struct _NSSize { float width, height; } NSSize;
|
||||
typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
|
||||
#endif
|
||||
|
||||
#define NativeRectangle struct _NSRect
|
||||
|
||||
#define CONVERT_TO_XRECT(xr, nr) \
|
||||
((xr).x = (nr).origin.x, \
|
||||
(xr).y = (nr).origin.y, \
|
||||
(xr).width = (nr).size.width, \
|
||||
(xr).height = (nr).size.height)
|
||||
|
||||
#define CONVERT_FROM_XRECT(xr, nr) \
|
||||
((nr).origin.x = (xr).x, \
|
||||
(nr).origin.y = (xr).y, \
|
||||
(nr).size.width = (xr).width, \
|
||||
(nr).size.height = (xr).height)
|
||||
|
||||
#define STORE_NATIVE_RECT(nr, px, py, pwidth, pheight) \
|
||||
((nr).origin.x = (px), \
|
||||
(nr).origin.y = (py), \
|
||||
(nr).size.width = (pwidth), \
|
||||
(nr).size.height = (pheight))
|
||||
|
||||
|
||||
|
||||
|
||||
/* This stuff needed by frame.c. */
|
||||
#define ForgetGravity 0
|
||||
#define NorthWestGravity 1
|
||||
#define NorthGravity 2
|
||||
#define NorthEastGravity 3
|
||||
#define WestGravity 4
|
||||
#define CenterGravity 5
|
||||
#define EastGravity 6
|
||||
#define SouthWestGravity 7
|
||||
#define SouthGravity 8
|
||||
#define SouthEastGravity 9
|
||||
#define StaticGravity 10
|
||||
|
||||
#define NoValue 0x0000
|
||||
#define XValue 0x0001
|
||||
#define YValue 0x0002
|
||||
#define WidthValue 0x0004
|
||||
#define HeightValue 0x0008
|
||||
#define AllValues 0x000F
|
||||
#define XNegative 0x0010
|
||||
#define YNegative 0x0020
|
||||
|
||||
#define USPosition (1L << 0) /* user specified x, y */
|
||||
#define USSize (1L << 1) /* user specified width, height */
|
||||
|
||||
#define PPosition (1L << 2) /* program specified position */
|
||||
#define PSize (1L << 3) /* program specified size */
|
||||
#define PMinSize (1L << 4) /* program specified minimum size */
|
||||
#define PMaxSize (1L << 5) /* program specified maximum size */
|
||||
#define PResizeInc (1L << 6) /* program specified resize increments */
|
||||
#define PAspect (1L << 7) /* program specified min, max aspect ratios */
|
||||
#define PBaseSize (1L << 8) /* program specified base for incrementing */
|
||||
#define PWinGravity (1L << 9) /* program specified window gravity */
|
||||
|
||||
#endif /* __NSGUI_H__ */
|
480
src/nsimage.m
Normal file
480
src/nsimage.m
Normal file
|
@ -0,0 +1,480 @@
|
|||
/* Image support for the NeXT/Open/GNUstep and MacOSX window system.
|
||||
Copyright (C) 1989, 1992, 1993, 1994, 2005, 2006, 2008,
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
Originally by Carl Edman
|
||||
Updated by Christian Limpach (chris@nice.ch)
|
||||
OpenStep/Rhapsody port by Scott Bender (sbender@harmony-ds.com)
|
||||
MacOSX/Aqua port by Christophe de Dinechin (descubes@earthlink.net)
|
||||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "lisp.h"
|
||||
#include "dispextern.h"
|
||||
#include "nsterm.h"
|
||||
#include "frame.h"
|
||||
|
||||
extern Lisp_Object QCfile, QCdata;
|
||||
|
||||
/* call tracing */
|
||||
#if 0
|
||||
int image_trace_num = 0;
|
||||
#define NSTRACE(x) fprintf (stderr, "%s:%d: [%d] " #x "\n", \
|
||||
__FILE__, __LINE__, ++image_trace_num)
|
||||
#else
|
||||
#define NSTRACE(x)
|
||||
#endif
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
C interface. This allows easy calling from C files. We could just
|
||||
compile everything as Objective-C, but that might mean slower
|
||||
compilation and possible difficulties on some platforms..
|
||||
|
||||
========================================================================== */
|
||||
|
||||
void *
|
||||
ns_image_from_XBM (unsigned char *bits, int width, int height)
|
||||
{
|
||||
NSTRACE (ns_image_from_XBM);
|
||||
return [[EmacsImage alloc] initFromXBM: bits
|
||||
width: width height: height
|
||||
flip: YES];
|
||||
}
|
||||
|
||||
void *
|
||||
ns_image_for_XPM (int width, int height, int depth)
|
||||
{
|
||||
NSTRACE (ns_image_for_XPM);
|
||||
return [[EmacsImage alloc] initForXPMWithDepth: depth
|
||||
width: width height: height];
|
||||
}
|
||||
|
||||
void *
|
||||
ns_image_from_file (Lisp_Object file)
|
||||
{
|
||||
NSTRACE (ns_image_from_bitmap_file);
|
||||
return [EmacsImage allocInitFromFile: file];
|
||||
}
|
||||
|
||||
int
|
||||
ns_load_image (struct frame *f, struct image *img,
|
||||
Lisp_Object spec_file, Lisp_Object spec_data)
|
||||
{
|
||||
NSTRACE (ns_load_image);
|
||||
|
||||
EmacsImage *eImg;
|
||||
NSSize size;
|
||||
|
||||
if (NILP (spec_data))
|
||||
{
|
||||
eImg = [EmacsImage allocInitFromFile: spec_file];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSData *data = [NSData dataWithBytes: XSTRING (spec_data)->data
|
||||
length: SBYTES (spec_data)];
|
||||
eImg = [[EmacsImage alloc] initWithData: data];
|
||||
[eImg setPixmapData];
|
||||
}
|
||||
|
||||
if (eImg == nil)
|
||||
{
|
||||
add_to_log ("Unable to load image %s", img->spec, Qnil);
|
||||
return 0;
|
||||
}
|
||||
|
||||
size = [eImg size];
|
||||
img->width = size.width;
|
||||
img->height = size.height;
|
||||
|
||||
/* 4) set img->pixmap = emacsimage */
|
||||
img->pixmap = eImg;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ns_image_width (void *img)
|
||||
{
|
||||
return [(id)img size].width;
|
||||
}
|
||||
|
||||
int
|
||||
ns_image_height (void *img)
|
||||
{
|
||||
return [(id)img size].height;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
ns_get_pixel (void *img, int x, int y)
|
||||
{
|
||||
return [(EmacsImage *)img getPixelAtX: x Y: y];
|
||||
}
|
||||
|
||||
void
|
||||
ns_put_pixel (void *img, int x, int y, unsigned long argb)
|
||||
{
|
||||
unsigned char alpha = (argb >> 24) & 0xFF;
|
||||
if (alpha == 0)
|
||||
alpha = 0xFF;
|
||||
[(EmacsImage *)img setPixelAtX: x Y: y toRed: (argb >> 16) & 0xFF
|
||||
green: (argb >> 8) & 0xFF blue: (argb & 0xFF) alpha: alpha];
|
||||
}
|
||||
|
||||
void
|
||||
ns_set_alpha (void *img, int x, int y, unsigned char a)
|
||||
{
|
||||
[(EmacsImage *)img setAlphaAtX: x Y: y to: a];
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Class supporting bitmaps and images of various sorts.
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@implementation EmacsImage
|
||||
|
||||
static EmacsImage *ImageList = nil;
|
||||
|
||||
+ allocInitFromFile: (Lisp_Object)file
|
||||
{
|
||||
EmacsImage *image = ImageList;
|
||||
Lisp_Object found;
|
||||
|
||||
/* look for an existing image of the same name */
|
||||
while (image != nil &&
|
||||
[[image name] compare: [NSString stringWithUTF8String: SDATA (file)]]
|
||||
!= NSOrderedSame)
|
||||
image = [image imageListNext];
|
||||
|
||||
if (image != nil)
|
||||
{
|
||||
[image reference];
|
||||
return image;
|
||||
}
|
||||
|
||||
/* Search bitmap-file-path for the file, if appropriate. */
|
||||
found = x_find_image_file (file);
|
||||
if (!STRINGP (found))
|
||||
return nil;
|
||||
|
||||
image = [[EmacsImage alloc] initByReferencingFile:
|
||||
[NSString stringWithUTF8String: SDATA (found)]];
|
||||
|
||||
if ([image bestRepresentationForDevice: nil] == nil)
|
||||
{
|
||||
[image release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
[image setName: [NSString stringWithUTF8String: SDATA (file)]];
|
||||
[image reference];
|
||||
ImageList = [image imageListSetNext: ImageList];
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
- reference
|
||||
{
|
||||
refCount++;
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- imageListSetNext: (id)arg
|
||||
{
|
||||
imageListNext = arg;
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- imageListNext
|
||||
{
|
||||
return imageListNext;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
id list = ImageList;
|
||||
|
||||
if (refCount > 1)
|
||||
{
|
||||
refCount--;
|
||||
return;
|
||||
}
|
||||
|
||||
[stippleMask release];
|
||||
|
||||
if (list == self)
|
||||
ImageList = imageListNext;
|
||||
else
|
||||
{
|
||||
while (list != nil && [list imageListNext] != self)
|
||||
list = [list imageListNext];
|
||||
[list imageListSetNext: imageListNext];
|
||||
}
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
- initFromXBM: (unsigned char *)bits width: (int)w height: (int)h
|
||||
flip: (BOOL)flip
|
||||
{
|
||||
return [self initFromSkipXBM: bits width: w height: h flip: flip length: 0];
|
||||
}
|
||||
|
||||
|
||||
- initFromSkipXBM: (unsigned char *)bits width: (int)w height: (int)h
|
||||
flip: (BOOL)flip length: (int)length;
|
||||
{
|
||||
int bpr = (w + 7) / 8;
|
||||
unsigned char *planes[5];
|
||||
|
||||
[self initWithSize: NSMakeSize (w, h)];
|
||||
|
||||
bmRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL
|
||||
pixelsWide: w pixelsHigh: h
|
||||
bitsPerSample: 8 samplesPerPixel: 4
|
||||
hasAlpha: YES isPlanar: YES
|
||||
colorSpaceName: NSCalibratedRGBColorSpace
|
||||
bytesPerRow: w bitsPerPixel: 0];
|
||||
|
||||
[bmRep getBitmapDataPlanes: planes];
|
||||
{
|
||||
/* pull bits out to set the (bytewise) alpha mask */
|
||||
int i, j, k;
|
||||
unsigned char *s = bits;
|
||||
unsigned char *alpha = planes[3];
|
||||
unsigned char swt[16] = {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13,
|
||||
3, 11, 7, 15};
|
||||
unsigned char c, bitPat;
|
||||
|
||||
for (j = 0; j < h; j++)
|
||||
for (i = 0; i < bpr; i++)
|
||||
{
|
||||
if (length)
|
||||
{
|
||||
unsigned char s1, s2;
|
||||
while (*s++ != 'x' && s < bits + length);
|
||||
if (s >= bits + length)
|
||||
{
|
||||
[bmRep release];
|
||||
return nil;
|
||||
}
|
||||
#define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
|
||||
s1 = *s++;
|
||||
s2 = *s++;
|
||||
c = hexchar (s1) * 0x10 + hexchar (s2);
|
||||
}
|
||||
else
|
||||
c = *s++;
|
||||
|
||||
bitPat = flip ? swt[c >> 4] | (swt[c & 0xf] << 4) : c ^ 255;
|
||||
for (k =0; k<8; k++)
|
||||
{
|
||||
*alpha++ = (bitPat & 0x80) ? 0xff : 0;
|
||||
bitPat <<= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[self addRepresentation: bmRep];
|
||||
|
||||
bzero (planes[0], w*h);
|
||||
bzero (planes[1], w*h);
|
||||
bzero (planes[2], w*h);
|
||||
[self setXBMColor: [NSColor blackColor]];
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
/* Set color for a bitmap image (see initFromSkipXBM). Note that the alpha
|
||||
is used as a mask, so we just memset the entire array. */
|
||||
- setXBMColor: (NSColor *)color
|
||||
{
|
||||
NSSize s = [self size];
|
||||
int len = (int) s.width * s.height;
|
||||
unsigned char *planes[5];
|
||||
float r, g, b, a;
|
||||
NSColor *rgbColor;
|
||||
|
||||
if (bmRep == nil || color == nil)
|
||||
return;
|
||||
|
||||
if ([color colorSpaceName] != NSCalibratedRGBColorSpace)
|
||||
rgbColor = [color colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
|
||||
else
|
||||
rgbColor = color;
|
||||
|
||||
[rgbColor getRed: &r green: &g blue: &b alpha: &a];
|
||||
|
||||
[bmRep getBitmapDataPlanes: planes];
|
||||
|
||||
/* we used to just do this, but Cocoa seems to have a bug when rendering
|
||||
an alpha-masked image onto a dark background where it bloats the mask */
|
||||
/* memset (planes[0..2], r, g, b*0xff, len); */
|
||||
{
|
||||
int i, len = s.width*s.height;
|
||||
int rr = r * 0xff, gg = g * 0xff, bb = b * 0xff;
|
||||
for (i =0; i<len; i++)
|
||||
if (planes[3][i] != 0)
|
||||
{
|
||||
planes[0][i] = rr;
|
||||
planes[1][i] = gg;
|
||||
planes[2][i] = bb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- initForXPMWithDepth: (int)depth width: (int)width height: (int)height
|
||||
{
|
||||
NSSize s = {width, height};
|
||||
int i;
|
||||
|
||||
[self initWithSize: s];
|
||||
|
||||
bmRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL
|
||||
pixelsWide: width pixelsHigh: height
|
||||
/* keep things simple for now */
|
||||
bitsPerSample: 8 samplesPerPixel: 4 /*RGB+A*/
|
||||
hasAlpha: YES isPlanar: YES
|
||||
colorSpaceName: NSCalibratedRGBColorSpace
|
||||
bytesPerRow: width bitsPerPixel: 0];
|
||||
|
||||
[bmRep getBitmapDataPlanes: pixmapData];
|
||||
for (i =0; i<4; i++)
|
||||
bzero (pixmapData[i], width*height);
|
||||
[self addRepresentation: bmRep];
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
/* attempt to pull out pixmap data from a BitmapImageRep; returns NO if fails */
|
||||
- (void) setPixmapData
|
||||
{
|
||||
NSEnumerator *reps;
|
||||
NSImageRep *rep;
|
||||
|
||||
reps = [[self representations] objectEnumerator];
|
||||
while (rep = (NSImageRep *) [reps nextObject])
|
||||
{
|
||||
if ([rep respondsToSelector: @selector (getBitmapDataPlanes:)])
|
||||
{
|
||||
bmRep = (NSBitmapImageRep *) rep;
|
||||
onTiger = [bmRep respondsToSelector: @selector (colorAtX:y:)];
|
||||
|
||||
if ([bmRep numberOfPlanes] >= 3)
|
||||
[bmRep getBitmapDataPlanes: pixmapData];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* note; this and next work only for image created with initForXPMWithDepth,
|
||||
initFromSkipXBM, or where setPixmapData was called successfully */
|
||||
/* return ARGB */
|
||||
- (unsigned long) getPixelAtX: (int)x Y: (int)y
|
||||
{
|
||||
if (bmRep == nil)
|
||||
return 0;
|
||||
|
||||
/* this method is faster but won't work for bitmaps */
|
||||
if (pixmapData[0] != NULL)
|
||||
{
|
||||
int loc = x + y * [self size].width;
|
||||
return (pixmapData[3][loc] << 24) /* alpha */
|
||||
| (pixmapData[0][loc] << 16) | (pixmapData[1][loc] << 8)
|
||||
| (pixmapData[2][loc]);
|
||||
}
|
||||
else if (onTiger)
|
||||
{
|
||||
NSColor *color = [bmRep colorAtX: x y: y];
|
||||
float r, g, b, a;
|
||||
[color getRed: &r green: &g blue: &b alpha: &a];
|
||||
return ((int)(a * 255.0) << 24)
|
||||
| ((int)(r * 255.0) << 16) | ((int)(g * 255.0) << 8)
|
||||
| ((int)(b * 255.0));
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (void) setPixelAtX: (int)x Y: (int)y toRed: (unsigned char)r
|
||||
green: (unsigned char)g blue: (unsigned char)b
|
||||
alpha:(unsigned char)a;
|
||||
{
|
||||
if (bmRep == nil)
|
||||
return;
|
||||
|
||||
if (pixmapData[0] != NULL)
|
||||
{
|
||||
int loc = x + y * [self size].width;
|
||||
pixmapData[0][loc] = r;
|
||||
pixmapData[1][loc] = g;
|
||||
pixmapData[2][loc] = b;
|
||||
pixmapData[3][loc] = a;
|
||||
}
|
||||
else if (onTiger)
|
||||
{
|
||||
[bmRep setColor:
|
||||
[NSColor colorWithCalibratedRed: r green: g blue: b alpha: a]
|
||||
atX: x y: y];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setAlphaAtX: (int) x Y: (int) y to: (unsigned char) a
|
||||
{
|
||||
if (bmRep == nil)
|
||||
return;
|
||||
|
||||
if (pixmapData[0] != NULL)
|
||||
{
|
||||
int loc = x + y * [self size].width;
|
||||
|
||||
pixmapData[3][loc] = a;
|
||||
}
|
||||
else if (onTiger)
|
||||
{
|
||||
NSColor *color = [bmRep colorAtX: x y: y];
|
||||
color = [color colorWithAlphaComponent: (a / 255.0)];
|
||||
[bmRep setColor: color atX: x y: y];
|
||||
}
|
||||
}
|
||||
|
||||
/* returns a pattern color, which is cached here */
|
||||
- (NSColor *)stippleMask
|
||||
{
|
||||
if (stippleMask == nil)
|
||||
stippleMask = [[NSColor colorWithPatternImage: self] retain];
|
||||
return stippleMask;
|
||||
}
|
||||
|
||||
@end
|
1948
src/nsmenu.m
Normal file
1948
src/nsmenu.m
Normal file
File diff suppressed because it is too large
Load diff
624
src/nsselect.m
Normal file
624
src/nsselect.m
Normal file
|
@ -0,0 +1,624 @@
|
|||
/* NeXT/Open/GNUstep / MacOSX Cocoa selection processing for emacs.
|
||||
Copyright (C) 1993, 1994, 2005, 2006, 2008,
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
Originally by Carl Edman
|
||||
Updated by Christian Limpach (chris@nice.ch)
|
||||
OpenStep/Rhapsody port by Scott Bender (sbender@harmony-ds.com)
|
||||
MacOSX/Aqua port by Christophe de Dinechin (descubes@earthlink.net)
|
||||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "lisp.h"
|
||||
#include "nsterm.h"
|
||||
#include "termhooks.h"
|
||||
|
||||
#define CUT_BUFFER_SUPPORT
|
||||
|
||||
Lisp_Object QPRIMARY, QSECONDARY, QTEXT, QFILE_NAME;
|
||||
|
||||
static Lisp_Object Vns_sent_selection_hooks;
|
||||
static Lisp_Object Vns_lost_selection_hooks;
|
||||
static Lisp_Object Vselection_alist;
|
||||
static Lisp_Object Vselection_converter_alist;
|
||||
|
||||
/* 23: new */
|
||||
/* Coding system for communicating with other programs. */
|
||||
static Lisp_Object Vselection_coding_system;
|
||||
/* Coding system for the next communicating with other programs. */
|
||||
static Lisp_Object Vnext_selection_coding_system;
|
||||
static Lisp_Object Qforeign_selection;
|
||||
|
||||
NSString *NXSecondaryPboard;
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Internal utility functions
|
||||
|
||||
========================================================================== */
|
||||
|
||||
|
||||
static NSString *
|
||||
symbol_to_nsstring (Lisp_Object sym)
|
||||
{
|
||||
CHECK_SYMBOL (sym);
|
||||
if (EQ (sym, QPRIMARY)) return NSGeneralPboard;
|
||||
if (EQ (sym, QSECONDARY)) return NXSecondaryPboard;
|
||||
if (EQ (sym, QTEXT)) return NSStringPboardType;
|
||||
return [NSString stringWithUTF8String: XSTRING (XSYMBOL (sym)->xname)->data];
|
||||
}
|
||||
|
||||
|
||||
static Lisp_Object
|
||||
ns_string_to_symbol (NSString *t)
|
||||
{
|
||||
if ([t isEqualToString: NSGeneralPboard])
|
||||
return QPRIMARY;
|
||||
if ([t isEqualToString: NXSecondaryPboard])
|
||||
return QSECONDARY;
|
||||
if ([t isEqualToString: NSStringPboardType])
|
||||
return QTEXT;
|
||||
if ([t isEqualToString: NSFilenamesPboardType])
|
||||
return QFILE_NAME;
|
||||
if ([t isEqualToString: NSTabularTextPboardType])
|
||||
return QTEXT;
|
||||
return intern ([t UTF8String]);
|
||||
}
|
||||
|
||||
|
||||
static Lisp_Object
|
||||
clean_local_selection_data (Lisp_Object obj)
|
||||
{
|
||||
if (CONSP (obj)
|
||||
&& INTEGERP (XCAR (obj))
|
||||
&& CONSP (XCDR (obj))
|
||||
&& INTEGERP (XCAR (XCDR (obj)))
|
||||
&& NILP (XCDR (XCDR (obj))))
|
||||
obj = Fcons (XCAR (obj), XCDR (obj));
|
||||
|
||||
if (CONSP (obj)
|
||||
&& INTEGERP (XCAR (obj))
|
||||
&& INTEGERP (XCDR (obj)))
|
||||
{
|
||||
if (XINT (XCAR (obj)) == 0)
|
||||
return XCDR (obj);
|
||||
if (XINT (XCAR (obj)) == -1)
|
||||
return make_number (- XINT (XCDR (obj)));
|
||||
}
|
||||
|
||||
if (VECTORP (obj))
|
||||
{
|
||||
int i;
|
||||
int size = XVECTOR (obj)->size;
|
||||
Lisp_Object copy;
|
||||
|
||||
if (size == 1)
|
||||
return clean_local_selection_data (XVECTOR (obj)->contents [0]);
|
||||
copy = Fmake_vector (size, Qnil);
|
||||
for (i = 0; i < size; i++)
|
||||
XVECTOR (copy)->contents [i]
|
||||
= clean_local_selection_data (XVECTOR (obj)->contents [i]);
|
||||
return copy;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_declare_pasteboard (id pb)
|
||||
{
|
||||
[pb declareTypes: ns_send_types owner: NSApp];
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_undeclare_pasteboard (id pb)
|
||||
{
|
||||
[pb declareTypes: [NSArray array] owner: nil];
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_string_to_pasteboard_internal (id pb, Lisp_Object str, NSString *gtype)
|
||||
{
|
||||
if (EQ (str, Qnil))
|
||||
{
|
||||
[pb declareTypes: [NSArray array] owner: nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
char *utfStr;
|
||||
NSString *type, *nsStr;
|
||||
NSEnumerator *tenum;
|
||||
|
||||
CHECK_STRING (str);
|
||||
|
||||
utfStr = XSTRING (str)->data;
|
||||
nsStr = [NSString stringWithUTF8String: utfStr];
|
||||
|
||||
if (gtype == nil)
|
||||
{
|
||||
[pb declareTypes: ns_send_types owner: nil];
|
||||
tenum = [ns_send_types objectEnumerator];
|
||||
while ( (type = [tenum nextObject]) )
|
||||
[pb setString: nsStr forType: type];
|
||||
}
|
||||
else
|
||||
{
|
||||
[pb setString: nsStr forType: gtype];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static Lisp_Object
|
||||
ns_get_local_selection (Lisp_Object selection_name,
|
||||
Lisp_Object target_type)
|
||||
{
|
||||
Lisp_Object local_value;
|
||||
Lisp_Object handler_fn, value, type, check;
|
||||
int count;
|
||||
|
||||
local_value = assq_no_quit (selection_name, Vselection_alist);
|
||||
|
||||
if (NILP (local_value)) return Qnil;
|
||||
|
||||
count = specpdl_ptr - specpdl;
|
||||
specbind (Qinhibit_quit, Qt);
|
||||
CHECK_SYMBOL (target_type);
|
||||
handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist));
|
||||
if (!NILP (handler_fn))
|
||||
value =call3 (handler_fn, selection_name, target_type,
|
||||
XCAR (XCDR (local_value)));
|
||||
else
|
||||
value =Qnil;
|
||||
unbind_to (count, Qnil);
|
||||
|
||||
check =value;
|
||||
if (CONSP (value) && SYMBOLP (XCAR (value)))
|
||||
{
|
||||
type = XCAR (value);
|
||||
check = XCDR (value);
|
||||
}
|
||||
|
||||
if (STRINGP (check) || VECTORP (check) || SYMBOLP (check)
|
||||
|| INTEGERP (check) || NILP (value))
|
||||
return value;
|
||||
|
||||
if (CONSP (check)
|
||||
&& INTEGERP (XCAR (check))
|
||||
&& (INTEGERP (XCDR (check))||
|
||||
(CONSP (XCDR (check))
|
||||
&& INTEGERP (XCAR (XCDR (check)))
|
||||
&& NILP (XCDR (XCDR (check))))))
|
||||
return value;
|
||||
|
||||
Fsignal (Qquit, Fcons (build_string (
|
||||
"invalid data returned by selection-conversion function"),
|
||||
Fcons (handler_fn, Fcons (value, Qnil))));
|
||||
}
|
||||
|
||||
|
||||
static Lisp_Object
|
||||
ns_get_foreign_selection (Lisp_Object symbol, Lisp_Object target)
|
||||
{
|
||||
id pb;
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (symbol)];
|
||||
return ns_string_from_pasteboard (pb);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_handle_selection_request (struct input_event *event)
|
||||
{
|
||||
id pb =(id)event->x;
|
||||
NSString *type =(NSString *)event->y;
|
||||
Lisp_Object selection_name, selection_data, target_symbol, data;
|
||||
Lisp_Object successful_p, rest;
|
||||
|
||||
selection_name =ns_string_to_symbol ([(NSPasteboard *)pb name]);
|
||||
target_symbol =ns_string_to_symbol (type);
|
||||
selection_data = assq_no_quit (selection_name, Vselection_alist);
|
||||
successful_p =Qnil;
|
||||
|
||||
if (!NILP (selection_data))
|
||||
{
|
||||
data = ns_get_local_selection (selection_name, target_symbol);
|
||||
if (!NILP (data))
|
||||
{
|
||||
if (STRINGP (data))
|
||||
ns_string_to_pasteboard_internal (pb, data, type);
|
||||
successful_p =Qt;
|
||||
}
|
||||
}
|
||||
|
||||
if (!EQ (Vns_sent_selection_hooks, Qunbound))
|
||||
{
|
||||
for (rest =Vns_sent_selection_hooks;CONSP (rest); rest =Fcdr (rest))
|
||||
call3 (Fcar (rest), selection_name, target_symbol, successful_p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ns_handle_selection_clear (struct input_event *event)
|
||||
{
|
||||
id pb = (id)event->x;
|
||||
Lisp_Object selection_name, selection_data, rest;
|
||||
|
||||
selection_name =ns_string_to_symbol ([(NSPasteboard *)pb name]);
|
||||
selection_data =assq_no_quit (selection_name, Vselection_alist);
|
||||
if (NILP (selection_data)) return;
|
||||
|
||||
if (EQ (selection_data, Fcar (Vselection_alist)))
|
||||
Vselection_alist = Fcdr (Vselection_alist);
|
||||
else
|
||||
{
|
||||
for (rest = Vselection_alist; !NILP (rest); rest = Fcdr (rest))
|
||||
if (EQ (selection_data, Fcar (Fcdr (rest))))
|
||||
Fsetcdr (rest, Fcdr (Fcdr (rest)));
|
||||
}
|
||||
|
||||
if (!EQ (Vns_lost_selection_hooks, Qunbound))
|
||||
{
|
||||
for (rest =Vns_lost_selection_hooks;CONSP (rest); rest =Fcdr (rest))
|
||||
call1 (Fcar (rest), selection_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Functions used externally
|
||||
|
||||
========================================================================== */
|
||||
|
||||
|
||||
Lisp_Object
|
||||
ns_string_from_pasteboard (id pb)
|
||||
{
|
||||
NSString *type, *str;
|
||||
const char *utfStr;
|
||||
|
||||
type = [pb availableTypeFromArray: ns_return_types];
|
||||
if (type == nil)
|
||||
{
|
||||
Fsignal (Qquit,
|
||||
Fcons (build_string ("empty or unsupported pasteboard type"),
|
||||
Qnil));
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
/* get the string */
|
||||
if (! (str = [pb stringForType: type]))
|
||||
{
|
||||
NSData *data = [pb dataForType: type];
|
||||
if (data != nil)
|
||||
str = [[NSString alloc] initWithData: data
|
||||
encoding: NSUTF8StringEncoding];
|
||||
if (str != nil)
|
||||
{
|
||||
[str autorelease];
|
||||
}
|
||||
else
|
||||
{
|
||||
Fsignal (Qquit,
|
||||
Fcons (build_string ("pasteboard doesn't contain valid data"),
|
||||
Qnil));
|
||||
return Qnil;
|
||||
}
|
||||
}
|
||||
|
||||
/* assume UTF8 */
|
||||
NS_DURING
|
||||
{
|
||||
/* EOL conversion: PENDING- is this too simple? */
|
||||
NSMutableString *mstr = [[str mutableCopy] autorelease];
|
||||
[mstr replaceOccurrencesOfString: @"\r\n" withString: @"\n"
|
||||
options: NSLiteralSearch range: NSMakeRange (0, [mstr length])];
|
||||
[mstr replaceOccurrencesOfString: @"\r" withString: @"\n"
|
||||
options: NSLiteralSearch range: NSMakeRange (0, [mstr length])];
|
||||
|
||||
utfStr = [mstr UTF8String];
|
||||
if (!utfStr)
|
||||
utfStr = [mstr cString];
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
message1 ("ns_string_from_pasteboard: UTF8String failed\n");
|
||||
utfStr = [str lossyCString];
|
||||
}
|
||||
NS_ENDHANDLER
|
||||
|
||||
return build_string (utfStr);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ns_string_to_pasteboard (id pb, Lisp_Object str)
|
||||
{
|
||||
ns_string_to_pasteboard_internal (pb, str, nil);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Lisp Defuns
|
||||
|
||||
========================================================================== */
|
||||
|
||||
|
||||
DEFUN ("ns-own-selection-internal", Fns_own_selection_internal,
|
||||
Sns_own_selection_internal, 2, 2, 0, "Assert a selection.")
|
||||
(selection_name, selection_value)
|
||||
Lisp_Object selection_name, selection_value;
|
||||
{
|
||||
id pb;
|
||||
Lisp_Object old_value, new_value;
|
||||
|
||||
check_ns ();
|
||||
CHECK_SYMBOL (selection_name);
|
||||
if (NILP (selection_value))
|
||||
error ("selection-value may not be nil.");
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (selection_name)];
|
||||
ns_declare_pasteboard (pb);
|
||||
old_value =assq_no_quit (selection_name, Vselection_alist);
|
||||
new_value = Fcons (selection_name, Fcons (selection_value, Qnil));
|
||||
if (NILP (old_value))
|
||||
Vselection_alist =Fcons (new_value, Vselection_alist);
|
||||
else
|
||||
Fsetcdr (old_value, Fcdr (new_value));
|
||||
/* XXX An evil hack, but a necessary one I fear XXX */
|
||||
{
|
||||
struct input_event ev;
|
||||
ev.kind = SELECTION_REQUEST_EVENT;
|
||||
ev.modifiers = 0;
|
||||
ev.code = 0;
|
||||
ev.x = (int)pb;
|
||||
ev.y = (int)NSStringPboardType;
|
||||
ns_handle_selection_request (&ev);
|
||||
}
|
||||
return selection_value;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-disown-selection-internal", Fns_disown_selection_internal,
|
||||
Sns_disown_selection_internal, 1, 2, 0,
|
||||
"If we own the selection SELECTION, disown it.")
|
||||
(selection_name, time)
|
||||
Lisp_Object selection_name, time;
|
||||
{
|
||||
id pb;
|
||||
check_ns ();
|
||||
CHECK_SYMBOL (selection_name);
|
||||
if (NILP (assq_no_quit (selection_name, Vselection_alist))) return Qnil;
|
||||
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (selection_name)];
|
||||
ns_undeclare_pasteboard (pb);
|
||||
return Qt;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-selection-exists-p", Fns_selection_exists_p, Sns_selection_exists_p,
|
||||
0, 1, 0, "Whether there is an owner for the given selection.\n\
|
||||
The arg should be the name of the selection in question, typically one of\n\
|
||||
the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.\n\
|
||||
\(Those are literal upper-case symbol names.)\n\
|
||||
For convenience, the symbol nil is the same as `PRIMARY',\n\
|
||||
and t is the same as `SECONDARY'.)")
|
||||
(selection)
|
||||
Lisp_Object selection;
|
||||
{
|
||||
id pb;
|
||||
NSArray *types;
|
||||
|
||||
check_ns ();
|
||||
CHECK_SYMBOL (selection);
|
||||
if (EQ (selection, Qnil)) selection = QPRIMARY;
|
||||
if (EQ (selection, Qt)) selection = QSECONDARY;
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (selection)];
|
||||
types =[pb types];
|
||||
return ([types count] == 0) ? Qnil : Qt;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-selection-owner-p", Fns_selection_owner_p, Sns_selection_owner_p,
|
||||
0, 1, 0,
|
||||
"Whether the current Emacs process owns the given selection.\n\
|
||||
The arg should be the name of the selection in question, typically one of\n\
|
||||
the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.\n\
|
||||
\(Those are literal upper-case symbol names.)\n\
|
||||
For convenience, the symbol nil is the same as `PRIMARY',\n\
|
||||
and t is the same as `SECONDARY'.)")
|
||||
(selection)
|
||||
Lisp_Object selection;
|
||||
{
|
||||
check_ns ();
|
||||
CHECK_SYMBOL (selection);
|
||||
if (EQ (selection, Qnil)) selection = QPRIMARY;
|
||||
if (EQ (selection, Qt)) selection = QSECONDARY;
|
||||
return (NILP (Fassq (selection, Vselection_alist))) ? Qnil : Qt;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-get-selection-internal", Fns_get_selection_internal,
|
||||
Sns_get_selection_internal, 2, 2, 0,
|
||||
"Return text selected from some pasteboard.\n\
|
||||
SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.\n\
|
||||
\(Those are literal upper-case symbol names.)\n\
|
||||
TYPE is the type of data desired, typically `STRING'.")
|
||||
(selection_name, target_type)
|
||||
Lisp_Object selection_name, target_type;
|
||||
{
|
||||
Lisp_Object val;
|
||||
|
||||
check_ns ();
|
||||
CHECK_SYMBOL (selection_name);
|
||||
CHECK_SYMBOL (target_type);
|
||||
val = ns_get_local_selection (selection_name, target_type);
|
||||
if (NILP (val))
|
||||
val = ns_get_foreign_selection (selection_name, target_type);
|
||||
if (CONSP (val) && SYMBOLP (Fcar (val)))
|
||||
{
|
||||
val = Fcdr (val);
|
||||
if (CONSP (val) && NILP (Fcdr (val)))
|
||||
val = Fcar (val);
|
||||
}
|
||||
val = clean_local_selection_data (val);
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
#ifdef CUT_BUFFER_SUPPORT
|
||||
DEFUN ("ns-get-cut-buffer-internal", Fns_get_cut_buffer_internal,
|
||||
Sns_get_cut_buffer_internal, 1, 1, 0,
|
||||
"Returns the value of the named cut buffer.")
|
||||
(buffer)
|
||||
Lisp_Object buffer;
|
||||
{
|
||||
id pb;
|
||||
check_ns ();
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (buffer)];
|
||||
return ns_string_from_pasteboard (pb);
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-rotate-cut-buffers-internal", Fns_rotate_cut_buffers_internal,
|
||||
Sns_rotate_cut_buffers_internal, 1, 1, 0,
|
||||
"Rotate the values of the cut buffers by the given number of steps;\n\
|
||||
positive means move values forward, negative means backward. CURRENTLY NOT IMPLEMENTED UNDER NeXTstep.")
|
||||
(n)
|
||||
Lisp_Object n;
|
||||
{
|
||||
/* XXX This function is unimplemented under NeXTstep XXX */
|
||||
Fsignal (Qquit, Fcons (build_string (
|
||||
"Warning: ns-rotate-cut-buffers-internal not implemented\n"), Qnil));
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
||||
DEFUN ("ns-store-cut-buffer-internal", Fns_store_cut_buffer_internal,
|
||||
Sns_store_cut_buffer_internal, 2, 2, 0,
|
||||
"Sets the value of the named cut buffer (typically CUT_BUFFER0).")
|
||||
(buffer, string)
|
||||
Lisp_Object buffer, string;
|
||||
{
|
||||
id pb;
|
||||
check_ns ();
|
||||
pb =[NSPasteboard pasteboardWithName: symbol_to_nsstring (buffer)];
|
||||
ns_string_to_pasteboard (pb, string);
|
||||
return Qnil;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
nxatoms_of_nsselect (void)
|
||||
{
|
||||
NXSecondaryPboard = @"Selection";
|
||||
}
|
||||
|
||||
void
|
||||
syms_of_nsselect (void)
|
||||
{
|
||||
QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY);
|
||||
QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY);
|
||||
QTEXT = intern ("TEXT"); staticpro (&QTEXT);
|
||||
QFILE_NAME = intern ("FILE_NAME"); staticpro (&QFILE_NAME);
|
||||
|
||||
defsubr (&Sns_disown_selection_internal);
|
||||
defsubr (&Sns_get_selection_internal);
|
||||
defsubr (&Sns_own_selection_internal);
|
||||
defsubr (&Sns_selection_exists_p);
|
||||
defsubr (&Sns_selection_owner_p);
|
||||
#ifdef CUT_BUFFER_SUPPORT
|
||||
defsubr (&Sns_get_cut_buffer_internal);
|
||||
defsubr (&Sns_rotate_cut_buffers_internal);
|
||||
defsubr (&Sns_store_cut_buffer_internal);
|
||||
#endif
|
||||
|
||||
Vselection_alist = Qnil;
|
||||
staticpro (&Vselection_alist);
|
||||
|
||||
DEFVAR_LISP ("ns-sent-selection-hooks", &Vns_sent_selection_hooks,
|
||||
"A list of functions to be called when Emacs answers a selection request.\n\
|
||||
The functions are called with four arguments:\n\
|
||||
- the selection name (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');\n\
|
||||
- the selection-type which Emacs was asked to convert the\n\
|
||||
selection into before sending (for example, `STRING' or `LENGTH');\n\
|
||||
- a flag indicating success or failure for responding to the request.\n\
|
||||
We might have failed (and declined the request) for any number of reasons,\n\
|
||||
including being asked for a selection that we no longer own, or being asked\n\
|
||||
to convert into a type that we don't know about or that is inappropriate.\n\
|
||||
This hook doesn't let you change the behavior of Emacs's selection replies,\n\
|
||||
it merely informs you that they have happened.");
|
||||
Vns_sent_selection_hooks = Qnil;
|
||||
|
||||
DEFVAR_LISP ("selection-converter-alist", &Vselection_converter_alist,
|
||||
"An alist associating X Windows selection-types with functions.\n\
|
||||
These functions are called to convert the selection, with three args:\n\
|
||||
the name of the selection (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');\n\
|
||||
a desired type to which the selection should be converted;\n\
|
||||
and the local selection value (whatever was given to `x-own-selection').\n\
|
||||
\n\
|
||||
The function should return the value to send to the X server\n\
|
||||
\(typically a string). A return value of nil\n\
|
||||
means that the conversion could not be done.\n\
|
||||
A return value which is the symbol `NULL'\n\
|
||||
means that a side-effect was executed,\n\
|
||||
and there is no meaningful selection value.");
|
||||
Vselection_converter_alist = Qnil;
|
||||
|
||||
DEFVAR_LISP ("ns-lost-selection-hooks", &Vns_lost_selection_hooks,
|
||||
"A list of functions to be called when Emacs loses an X selection.\n\
|
||||
\(This happens when some other X client makes its own selection\n\
|
||||
or when a Lisp program explicitly clears the selection.)\n\
|
||||
The functions are called with one argument, the selection type\n\
|
||||
\(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD').");
|
||||
Vns_lost_selection_hooks = Qnil;
|
||||
|
||||
/* 23: { */
|
||||
DEFVAR_LISP ("selection-coding-system", &Vselection_coding_system,
|
||||
doc: /* Coding system for communicating with other programs.
|
||||
When sending or receiving text via cut_buffer, selection, and clipboard,
|
||||
the text is encoded or decoded by this coding system.
|
||||
The default value is determined by the system script code. */);
|
||||
Vselection_coding_system = Qnil;
|
||||
|
||||
DEFVAR_LISP ("next-selection-coding-system", &Vnext_selection_coding_system,
|
||||
doc: /* Coding system for the next communication with other programs.
|
||||
Usually, `selection-coding-system' is used for communicating with
|
||||
other programs. But, if this variable is set, it is used for the
|
||||
next communication only. After the communication, this variable is
|
||||
set to nil. */);
|
||||
Vnext_selection_coding_system = Qnil;
|
||||
|
||||
Qforeign_selection = intern ("foreign-selection");
|
||||
staticpro (&Qforeign_selection);
|
||||
/* } */
|
||||
|
||||
}
|
827
src/nsterm.h
Normal file
827
src/nsterm.h
Normal file
|
@ -0,0 +1,827 @@
|
|||
/* Definitions and headers for communication with NeXT/Open/GNUstep API.
|
||||
Copyright (C) 1989, 1993, 2005, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
GNU Emacs is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Emacs is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Emacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
#include "dispextern.h"
|
||||
#include "frame.h"
|
||||
#include "character.h"
|
||||
#include "font.h"
|
||||
|
||||
#ifdef HAVE_NS
|
||||
|
||||
#ifdef __OBJC__
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
The Emacs application
|
||||
|
||||
========================================================================== */
|
||||
|
||||
/* We override sendEvent: as a means to stop/start the event loop */
|
||||
@interface EmacsApp : NSApplication
|
||||
{
|
||||
}
|
||||
- (void)sendEvent: (NSEvent *)theEvent;
|
||||
- (void)showPreferencesWindow: (id)sender;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
The main Emacs view
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@class EmacsToolbar;
|
||||
|
||||
@interface EmacsView : NSView <NSTextInput>
|
||||
{
|
||||
char *old_title;
|
||||
BOOL windowClosing;
|
||||
NSString *workingText;
|
||||
BOOL processingCompose;
|
||||
@public
|
||||
struct frame *emacsframe;
|
||||
int rows, cols;
|
||||
int scrollbarsNeedingUpdate;
|
||||
EmacsToolbar *toolbar;
|
||||
}
|
||||
|
||||
/* AppKit-side interface */
|
||||
- menuDown: sender;
|
||||
- toolbarClicked: (id)item;
|
||||
- toggleToolbar: (id)sender;
|
||||
- (void)keyDown: (NSEvent *)theEvent;
|
||||
- (void)mouseDown: (NSEvent *)theEvent;
|
||||
- (void)mouseUp: (NSEvent *)theEvent;
|
||||
- setMiniwindowImage: (BOOL)setMini;
|
||||
|
||||
/* Emacs-side interface */
|
||||
- initFrameFromEmacs: (struct frame *) f;
|
||||
- (void) setRows: (int) r andColumns: (int) c;
|
||||
- (void) setWindowClosing: (BOOL)closing;
|
||||
- (EmacsToolbar *) toolbar;
|
||||
- (void) deleteWorkingText;
|
||||
@end
|
||||
|
||||
|
||||
/* Small utility used for processing resize events under Cocoa. */
|
||||
@interface EmacsWindow : NSWindow
|
||||
{
|
||||
NSPoint grabOffset;
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
The main menu implementation
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsMenu : NSMenu
|
||||
{
|
||||
struct frame *frame;
|
||||
unsigned long keyEquivModMask;
|
||||
}
|
||||
|
||||
- initWithTitle: (NSString *)title frame: (struct frame *)f;
|
||||
- (void)setFrame: (struct frame *)f;
|
||||
- (void)menuNeedsUpdate: (NSMenu *)menu; /* (delegate method) */
|
||||
- (NSString *)parseKeyEquiv: (char *)key;
|
||||
- (id <NSMenuItem>)addItemWithWidgetValue: (void *)wvptr;
|
||||
- (void)fillWithWidgetValue: (void *)wvptr;
|
||||
- (EmacsMenu *)addSubmenuWithTitle: (char *)title forFrame: (struct frame *)f;
|
||||
- (void) clear;
|
||||
- (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f
|
||||
keymaps: (int)keymaps;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Toolbar
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@class EmacsImage;
|
||||
|
||||
@interface EmacsToolbar : NSToolbar
|
||||
{
|
||||
EmacsView *emacsView;
|
||||
NSMutableDictionary *identifierToItem;
|
||||
NSMutableArray *activeIdentifiers;
|
||||
NSArray *prevIdentifiers;
|
||||
unsigned long enablement, prevEnablement;
|
||||
}
|
||||
- initForView: (EmacsView *)view withIdentifier: (NSString *)identifier;
|
||||
- (void) clearActive;
|
||||
- (BOOL) changed;
|
||||
- (void) addDisplayItemWithImage: (EmacsImage *)img idx: (int)idx
|
||||
helpText: (char *)help
|
||||
enabled: (BOOL)enabled;
|
||||
/* delegate methods */
|
||||
- (NSToolbarItem *)toolbar: (NSToolbar *)toolbar
|
||||
itemForItemIdentifier: (NSString *)itemIdentifier
|
||||
willBeInsertedIntoToolbar: (BOOL)flag;
|
||||
- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar;
|
||||
- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Message / question windows
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsDialogPanel : NSPanel
|
||||
{
|
||||
NSTextField *command;
|
||||
NSTextField *title;
|
||||
NSMatrix *matrix;
|
||||
int rows, cols;
|
||||
}
|
||||
- initFromContents: (Lisp_Object)menu isQuestion: (BOOL)isQ;
|
||||
- addButton: (char *)str value: (Lisp_Object)val row: (int)row;
|
||||
- addString: (char *)str row: (int)row;
|
||||
- addSplit;
|
||||
- (Lisp_Object)runDialogAt: (NSPoint)p;
|
||||
@end
|
||||
|
||||
@interface EmacsTooltip : NSObject
|
||||
{
|
||||
NSWindow *win;
|
||||
NSTextField *textField;
|
||||
NSTimer *timer;
|
||||
}
|
||||
- init;
|
||||
- (void) setText: (char *)text;
|
||||
- (void) showAtX: (int)x Y: (int)y for: (int)seconds;
|
||||
- (void) hide;
|
||||
- (BOOL) isActive;
|
||||
- (NSRect) frame;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
File open/save panels
|
||||
This and next override methods to work around OS X behavior of
|
||||
restarting application loop when user dismisses panel.
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsSavePanel : NSSavePanel
|
||||
{
|
||||
}
|
||||
@end
|
||||
@interface EmacsOpenPanel : NSOpenPanel
|
||||
{
|
||||
}
|
||||
@end
|
||||
|
||||
@interface EmacsFileDelegate : NSObject
|
||||
{
|
||||
}
|
||||
- (BOOL)panel: (id)sender isValidFilename: (NSString *)filename;
|
||||
- (BOOL)panel: (id)sender shouldShowFilename: (NSString *)filename;
|
||||
- (NSString *)panel: (id)sender userEnteredFilename: (NSString *)filename
|
||||
confirmed: (BOOL)okFlag;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Images and stippling
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsImage : NSImage
|
||||
{
|
||||
id imageListNext;
|
||||
int refCount;
|
||||
NSBitmapImageRep *bmRep; /* used for accessing pixel data */
|
||||
unsigned char *pixmapData[5]; /* shortcut to access pixel data */
|
||||
BOOL onTiger;
|
||||
NSColor *stippleMask;
|
||||
}
|
||||
+ allocInitFromFile: (Lisp_Object)file;
|
||||
- reference;
|
||||
- imageListSetNext: (id)arg;
|
||||
- imageListNext;
|
||||
- (void)dealloc;
|
||||
- initFromXBM: (unsigned char *)bits width: (int)w height: (int)h
|
||||
flip: (BOOL)flip;
|
||||
- initFromSkipXBM: (unsigned char *)bits width: (int)w height: (int)h
|
||||
flip: (BOOL)flip length: (int)length;
|
||||
- setXBMColor: (NSColor *)color;
|
||||
- initForXPMWithDepth: (int)depth width: (int)width height: (int)height;
|
||||
- (void)setPixmapData;
|
||||
- (unsigned long)getPixelAtX: (int)x Y: (int)y;
|
||||
- (void)setPixelAtX: (int)x Y: (int)y toRed: (unsigned char)r
|
||||
green: (unsigned char)g blue: (unsigned char)b
|
||||
alpha:(unsigned char)a;
|
||||
- (void)setAlphaAtX: (int)x Y: (int)y to: (unsigned char)a;
|
||||
- (NSColor *)stippleMask;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Scrollbars
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsScroller : NSScroller
|
||||
{
|
||||
Lisp_Object win;
|
||||
struct frame *frame;
|
||||
NSResponder *prevResponder;
|
||||
|
||||
/* offset to the bottom of knob of last mouse down */
|
||||
float last_mouse_offset;
|
||||
float min_portion;
|
||||
int pixel_height;
|
||||
int last_hit_part;
|
||||
|
||||
BOOL condemned;
|
||||
|
||||
/* optimize against excessive positioning calls generated by emacs */
|
||||
int em_position;
|
||||
int em_portion;
|
||||
int em_whole;
|
||||
}
|
||||
|
||||
- initFrame: (NSRect )r window: (Lisp_Object)win;
|
||||
- (void)setFrame: (NSRect)r;
|
||||
- (void)dealloc;
|
||||
|
||||
- setPosition: (int) position portion: (int) portion whole: (int) whole;
|
||||
- (int) checkSamePosition: (int)position portion: (int)portion
|
||||
whole: (int)whole;
|
||||
- (void) getMouseMotionPart: (int *)part window: (Lisp_Object *)window
|
||||
x: (Lisp_Object *)x y: ( Lisp_Object *)y;
|
||||
- (void) sendScrollEventAtLoc: (float)loc fromEvent: (NSEvent *)e;
|
||||
- repeatScroll: (NSTimer *)sender;
|
||||
- condemn;
|
||||
- reprieve;
|
||||
- judge;
|
||||
@end
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Rendering on Panther and above
|
||||
|
||||
========================================================================== */
|
||||
|
||||
#ifdef NS_IMPL_COCOA
|
||||
/* rendering util */
|
||||
@interface EmacsGlyphStorage : NSObject <NSGlyphStorage>
|
||||
{
|
||||
@public
|
||||
NSAttributedString *attrStr;
|
||||
NSMutableDictionary *dict;
|
||||
CGGlyph *cglyphs;
|
||||
unsigned long maxChar, maxGlyph;
|
||||
long i, len;
|
||||
}
|
||||
- initWithCapacity: (unsigned long) c;
|
||||
- (void) setString: (NSString *)str font: (NSFont *)font;
|
||||
@end
|
||||
#endif /* NS_IMPL_COCOA */
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Running the preferences window
|
||||
|
||||
========================================================================== */
|
||||
|
||||
@interface EmacsPrefsController : NSObject
|
||||
{
|
||||
struct frame *frame;
|
||||
IBOutlet NSWindow *prefsWindow;
|
||||
IBOutlet NSPopUpButton *alternateModMenu;
|
||||
IBOutlet NSPopUpButton *commandModMenu;
|
||||
#ifdef NS_IMPL_COCOA
|
||||
IBOutlet NSPopUpButton *controlModMenu;
|
||||
IBOutlet NSPopUpButton *functionModMenu;
|
||||
#endif
|
||||
IBOutlet NSMatrix *cursorTypeMatrix;
|
||||
IBOutlet NSSlider *cursorBlinkSlider;
|
||||
IBOutlet NSSlider *expandSpaceSlider;
|
||||
#ifdef NS_IMPL_COCOA
|
||||
IBOutlet NSButton *smoothFontsCheck;
|
||||
IBOutlet NSButton *useQuickdrawCheck;
|
||||
IBOutlet NSButton *useSysHiliteCheck;
|
||||
BOOL prevUseHighlightColor;
|
||||
#endif
|
||||
float prevExpandSpace;
|
||||
float prevBlinkRate;
|
||||
}
|
||||
- (IBAction)cancel: (id)sender;
|
||||
- (IBAction)ok: (id)sender;
|
||||
- (IBAction)resetToDefaults: (id)sender;
|
||||
- (IBAction)runHelp: (id)sender;
|
||||
- (IBAction)setColors: (id)sender;
|
||||
- (IBAction)setDefaultFont: (id)sender;
|
||||
|
||||
- (void) showForFrame: (struct frame *)f;
|
||||
- (void) setPanelFromValues;
|
||||
- (void) setValuesFromPanel;
|
||||
@end
|
||||
|
||||
extern NSArray *ns_send_types, *ns_return_types;
|
||||
extern EmacsMenu *mainMenu, *svcsMenu;
|
||||
|
||||
/* Apple removed the declaration, but kept the implementation */
|
||||
#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
|
||||
@interface NSApplication (EmacsApp)
|
||||
- (void)setAppleMenu: (NSMenu *)menu;
|
||||
@end
|
||||
#endif
|
||||
|
||||
#endif /* __OBJC__ */
|
||||
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Non-OO stuff
|
||||
|
||||
========================================================================== */
|
||||
|
||||
enum ns_cursor_types
|
||||
{
|
||||
no_highlight =0,
|
||||
filled_box,
|
||||
hollow_box,
|
||||
underscore,
|
||||
bar
|
||||
};
|
||||
|
||||
|
||||
/* could use list to store these, but rest of emacs has a big infrastructure
|
||||
for managing a table of bitmap "records" */
|
||||
struct ns_bitmap_record
|
||||
{
|
||||
#ifdef __OBJC__
|
||||
EmacsImage *img;
|
||||
#else
|
||||
void *img;
|
||||
#endif
|
||||
char *file;
|
||||
int refcount;
|
||||
int height, width, depth;
|
||||
};
|
||||
|
||||
/* this to map between emacs color indices and NSColor objects */
|
||||
struct ns_color_table
|
||||
{
|
||||
unsigned int size;
|
||||
unsigned int avail;
|
||||
#ifdef __OBJC__
|
||||
NSColor **colors;
|
||||
NSMutableSet *empty_indices;
|
||||
#else
|
||||
void **items;
|
||||
void *availIndices;
|
||||
#endif
|
||||
};
|
||||
#define NS_COLOR_CAPACITY 256
|
||||
|
||||
#define RGB_TO_ULONG(r, g, b) (((r) << 16) | ((g) << 8) | (b))
|
||||
#define ARGB_TO_ULONG(a, r, g, b) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
|
||||
|
||||
#define ALPHA_FROM_ULONG(color) ((color) >> 24)
|
||||
#define RED_FROM_ULONG(color) (((color) >> 16) & 0xff)
|
||||
#define GREEN_FROM_ULONG(color) (((color) >> 8) & 0xff)
|
||||
#define BLUE_FROM_ULONG(color) ((color) & 0xff)
|
||||
|
||||
/* Do not change `* 0x101' in the following lines to `<< 8'. If
|
||||
changed, image masks in 1-bit depth will not work. */
|
||||
#define RED16_FROM_ULONG(color) (RED_FROM_ULONG(color) * 0x101)
|
||||
#define GREEN16_FROM_ULONG(color) (GREEN_FROM_ULONG(color) * 0x101)
|
||||
#define BLUE16_FROM_ULONG(color) (BLUE_FROM_ULONG(color) * 0x101)
|
||||
|
||||
/* this extends font backend font */
|
||||
struct nsfont_info
|
||||
{
|
||||
struct font font;
|
||||
|
||||
char *name; /* postscript name, uniquely identifies on NS systems */
|
||||
float width; /* this and following metrics stored as float rather than int */
|
||||
float height;
|
||||
float underpos;
|
||||
float underwidth;
|
||||
float size;
|
||||
#ifdef __OBJC__
|
||||
NSFont *nsfont;
|
||||
/* cgfont and synthItal are used only on OS X 10.3+ */
|
||||
#if defined (NS_IMPL_COCOA) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
|
||||
CGFontRef cgfont;
|
||||
#else /* GNUstep or OS X < 10.3 */
|
||||
void *cgfont;
|
||||
#endif
|
||||
#else /* ! OBJC */
|
||||
void *nsfont;
|
||||
void *cgfont;
|
||||
#endif
|
||||
char bold, ital; /* convenience flags */
|
||||
char synthItal;
|
||||
float voffset; /* mean of ascender/descender offsets */
|
||||
XCharStruct max_bounds; /* 23 */
|
||||
/* we compute glyph codes and metrics on-demand in blocks of 256 indexed
|
||||
by hibyte, lobyte */
|
||||
unsigned short **glyphs; /* map unicode index to glyph */
|
||||
struct font_metrics **metrics;
|
||||
};
|
||||
|
||||
|
||||
/* init'd in ns_initialize_display_info () */
|
||||
struct ns_display_info
|
||||
{
|
||||
/* Chain of all ns_display_info structures. */
|
||||
struct ns_display_info *next;
|
||||
|
||||
/* The generic display parameters corresponding to this NS display. */
|
||||
struct terminal *terminal;
|
||||
|
||||
/* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
|
||||
The same cons cell also appears in ns_display_name_list. */
|
||||
Lisp_Object name_list_element;
|
||||
|
||||
/* The number of fonts loaded. */
|
||||
int n_fonts;
|
||||
|
||||
/* Minimum width over all characters in all fonts in font_table. */
|
||||
int smallest_char_width;
|
||||
|
||||
/* Minimum font height over all fonts in font_table. */
|
||||
int smallest_font_height;
|
||||
|
||||
struct kboard *kboard;
|
||||
|
||||
/*/23 */
|
||||
struct ns_bitmap_record *bitmaps;
|
||||
int bitmaps_size;
|
||||
int bitmaps_last;
|
||||
|
||||
/* 23 */
|
||||
struct image_cache *image_cache;
|
||||
|
||||
struct ns_color_table *color_table;
|
||||
|
||||
/* 23: Dimensions and DPI resolution of this screen */
|
||||
int height, width;
|
||||
double resx, resy;
|
||||
|
||||
/* 23: Mask of things that cause the mouse to be grabbed */
|
||||
int grabbed;
|
||||
|
||||
/* 23 */
|
||||
int n_planes;
|
||||
|
||||
/* 23 */
|
||||
int color_p;
|
||||
|
||||
/* 23 */
|
||||
Window root_window;
|
||||
|
||||
/* 23: Xism */
|
||||
XrmDatabase xrdb;
|
||||
|
||||
/* 23: The cursor to use for vertical scroll bars. */
|
||||
Cursor vertical_scroll_bar_cursor;
|
||||
|
||||
/* 23: most mouse face stuff moved in here (and reasonably so) */
|
||||
int mouse_face_beg_row, mouse_face_beg_col;
|
||||
int mouse_face_end_row, mouse_face_end_col;
|
||||
int mouse_face_beg_x, mouse_face_beg_y;
|
||||
int mouse_face_end_x, mouse_face_end_y;
|
||||
int mouse_face_past_end;
|
||||
Lisp_Object mouse_face_window;
|
||||
int mouse_face_face_id;
|
||||
int mouse_face_deferred_gc;
|
||||
Lisp_Object mouse_face_overlay;
|
||||
FRAME_PTR mouse_face_mouse_frame;
|
||||
int mouse_face_mouse_x, mouse_face_mouse_y;
|
||||
int mouse_face_defer;
|
||||
int mouse_face_hidden;
|
||||
int mouse_face_image_state;
|
||||
|
||||
/* these are general, but we redefine due to Xism */
|
||||
struct frame *ns_highlight_frame;
|
||||
struct frame *ns_focus_frame;
|
||||
#define x_highlight_frame ns_highlight_frame
|
||||
#define x_focus_frame ns_focus_frame
|
||||
};
|
||||
|
||||
/* This is a chain of structures for all the NS displays currently in use. */
|
||||
extern struct ns_display_info *ns_display_list;
|
||||
/* handle Xism */
|
||||
#define x_display_list ns_display_list
|
||||
|
||||
extern Lisp_Object ns_display_name_list;
|
||||
extern struct ns_display_info *ns_display_info_for_name ();
|
||||
|
||||
/* 23: PENDING: these functions (we defined in nsfns) are used in various
|
||||
places, but no prototypes are provided */
|
||||
struct ns_display_info *check_x_display_info (Lisp_Object frame);
|
||||
FRAME_PTR check_x_frame (Lisp_Object frame);
|
||||
|
||||
|
||||
struct ns_output
|
||||
{
|
||||
#ifdef __OBJC__
|
||||
EmacsView *view;
|
||||
id miniimage;
|
||||
NSColor *current_cursor_color;
|
||||
NSColor *desired_cursor_color;
|
||||
NSColor *foreground_color;
|
||||
NSColor *background_color;
|
||||
EmacsToolbar *toolbar;
|
||||
#else
|
||||
void *view;
|
||||
void *miniimage;
|
||||
void *current_cursor_color;
|
||||
void *desired_cursor_color;
|
||||
void *foreground_color;
|
||||
void *background_color;
|
||||
void *toolbar;
|
||||
#endif
|
||||
|
||||
/* 23: NSCursors init'ed in initFrameFromEmacs */
|
||||
Cursor text_cursor;
|
||||
Cursor nontext_cursor;
|
||||
Cursor modeline_cursor;
|
||||
Cursor hand_cursor;
|
||||
Cursor hourglass_cursor;
|
||||
Cursor horizontal_drag_cursor;
|
||||
|
||||
/* 23: NS-specific */
|
||||
Cursor current_pointer;
|
||||
|
||||
/* 23: lord knows why Emacs needs to know about our Window ids.. */
|
||||
Window window_desc, parent_desc;
|
||||
char explicit_parent;
|
||||
|
||||
struct font *font;
|
||||
int baseline_offset;
|
||||
|
||||
/* If a fontset is specified for this frame instead of font, this
|
||||
value contains an ID of the fontset, else -1. */
|
||||
int fontset; /* only used with font_backend */
|
||||
|
||||
Lisp_Object icon_top;
|
||||
Lisp_Object icon_left;
|
||||
enum ns_cursor_types current_cursor, desired_cursor;
|
||||
unsigned char last_inactive;
|
||||
|
||||
/* The size of the extra width currently allotted for vertical
|
||||
scroll bars, in pixels. */
|
||||
int vertical_scroll_bar_extra;
|
||||
|
||||
/* The height of the titlebar decoration (included in NSWindow's frame). */
|
||||
int titlebar_height;
|
||||
|
||||
/* The height of the toolbar if displayed, else 0. */
|
||||
int toolbar_height;
|
||||
|
||||
/* This is the Emacs structure for the NS display this frame is on. */
|
||||
struct ns_display_info *display_info;
|
||||
};
|
||||
|
||||
/* 23: this dummy decl now needed to support TTYs */
|
||||
struct x_output
|
||||
{
|
||||
unsigned long background_pixel;
|
||||
unsigned long foreground_pixel;
|
||||
};
|
||||
|
||||
|
||||
/* This gives the ns_display_info structure for the display F is on. */
|
||||
#define FRAME_NS_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
|
||||
/* the primacy of X must be constantly worked with... */
|
||||
#define FRAME_X_DISPLAY_INFO(f) ((f)->output_data.ns->display_info)
|
||||
#define FRAME_X_OUTPUT(f) ((f)->output_data.ns)
|
||||
#define FRAME_NS_WINDOW(f) ((f)->output_data.ns->window_desc)
|
||||
#define FRAME_X_WINDOW(f) ((f)->output_data.ns->window_desc)
|
||||
|
||||
/* This is the `Display *' which frame F is on. */
|
||||
#define FRAME_NS_DISPLAY(f) (0)
|
||||
#define FRAME_X_DISPLAY(f) (0)
|
||||
|
||||
#define FRAME_FOREGROUND_COLOR(f) ((f)->output_data.ns->foreground_color)
|
||||
#define FRAME_BACKGROUND_COLOR(f) ((f)->output_data.ns->background_color)
|
||||
|
||||
#define FRAME_X_IMAGE_CACHE(F) FRAME_NS_DISPLAY_INFO ((F))->image_cache
|
||||
|
||||
#define NS_FACE_FOREGROUND(f) ((f)->foreground)
|
||||
#define NS_FACE_BACKGROUND(f) ((f)->background)
|
||||
#define FRAME_NS_TITLEBAR_HEIGHT(f) ((f)->output_data.ns->titlebar_height)
|
||||
#define FRAME_NS_TOOLBAR_HEIGHT(f) ((f)->output_data.ns->toolbar_height)
|
||||
|
||||
#define FONT_WIDTH(f) ((f)->max_width)
|
||||
#define FONT_HEIGHT(f) ((f)->height)
|
||||
/*#define FONT_BASE(f) ((f)->ascent) */
|
||||
#define FONT_BASE(f) (((struct nsfont_info *)f)->max_bounds.ascent)
|
||||
/*#define FONT_DESCENT(f) ((f)->descent) */
|
||||
#define FONT_DESCENT(f) (((struct nsfont_info *)f)->max_bounds.descent)
|
||||
|
||||
#define FRAME_DEFAULT_FACE(f) FACE_FROM_ID (f, DEFAULT_FACE_ID)
|
||||
|
||||
#define FRAME_NS_VIEW(f) ((f)->output_data.ns->view)
|
||||
#define FRAME_CURSOR(f) ((f)->output_data.ns->current_cursor)
|
||||
#define FRAME_CURSOR_COLOR(f) ((f)->output_data.ns->current_cursor_color)
|
||||
#define FRAME_NEW_CURSOR_COLOR(f) ((f)->output_data.ns->desired_cursor_color)
|
||||
#define FRAME_NEW_CURSOR(f) ((f)->output_data.ns->desired_cursor)
|
||||
#define FRAME_POINTER_TYPE(f) ((f)->output_data.ns->current_pointer)
|
||||
#define FRAME_LAST_INACTIVE(f) ((f)->output_data.ns->last_inactive)
|
||||
|
||||
#define FRAME_FONT(f) ((f)->output_data.ns->font)
|
||||
|
||||
#ifdef __OBJC__
|
||||
#define XNS_SCROLL_BAR(vec) ((id) XSAVE_VALUE (vec)->pointer)
|
||||
#else
|
||||
#define XNS_SCROLL_BAR(vec) XSAVE_VALUE (vec)->pointer
|
||||
#endif
|
||||
|
||||
/* Compute pixel size for vertical scroll bars */
|
||||
#define NS_SCROLL_BAR_WIDTH(f) \
|
||||
(FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
|
||||
? rint (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0 \
|
||||
? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) \
|
||||
: (FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f))) \
|
||||
: 0)
|
||||
|
||||
/* Difference btwn char-column-calculated and actual SB widths.
|
||||
This is only a concern for rendering when SB on left. */
|
||||
#define NS_SCROLL_BAR_ADJUST(w, f) \
|
||||
(WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) ? \
|
||||
(FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f) \
|
||||
- NS_SCROLL_BAR_WIDTH (f)) : 0)
|
||||
|
||||
/*PENDING: fix for GNUstep inconsistent accounting for titlebar */
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
#define NS_TOP_POS(f) ((f)->top_pos + 18)
|
||||
#else
|
||||
#define NS_TOP_POS(f) ((f)->top_pos)
|
||||
#endif
|
||||
|
||||
#define FRAME_NS_FONT_TABLE(f) (FRAME_NS_DISPLAY_INFO (f)->font_table)
|
||||
|
||||
#define FRAME_FONTSET(f) ((f)->output_data.ns->fontset)
|
||||
|
||||
/* 23 */
|
||||
#define FRAME_SMALLEST_CHAR_WIDTH(f) \
|
||||
(FRAME_NS_DISPLAY_INFO (f)->smallest_char_width)
|
||||
#define FRAME_SMALLEST_FONT_HEIGHT(f) \
|
||||
(FRAME_NS_DISPLAY_INFO (f)->smallest_font_height)
|
||||
#define FONT_TYPE_FOR_UNIBYTE(font, ch) 0
|
||||
#define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0
|
||||
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.ns->baseline_offset)
|
||||
#define BLACK_PIX_DEFAULT(f) 0x000000
|
||||
#define WHITE_PIX_DEFAULT(f) 0xFFFFFF
|
||||
|
||||
/* First position where characters can be shown (instead of scrollbar, if
|
||||
it is on left. */
|
||||
#define FIRST_CHAR_POSITION(f) \
|
||||
(! (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f)) ? 0 \
|
||||
: FRAME_SCROLL_BAR_COLS (f))
|
||||
|
||||
extern struct ns_display_info *ns_term_init ();
|
||||
extern void ns_term_shutdown (int sig);
|
||||
|
||||
/* constants for text rendering */
|
||||
#define NS_DUMPGLYPH_NORMAL 0
|
||||
#define NS_DUMPGLYPH_CURSOR 1
|
||||
#define NS_DUMPGLYPH_FOREGROUND 2
|
||||
#define NS_DUMPGLYPH_MOUSEFACE 3
|
||||
|
||||
|
||||
/* In nsfont, called from fontset.c */
|
||||
extern void nsfont_make_fontset_for_font (Lisp_Object name,
|
||||
Lisp_Object font_object);
|
||||
|
||||
/* In nsfont, for debugging */
|
||||
struct glyph_string;
|
||||
void dump_glyphstring (struct glyph_string *s);
|
||||
|
||||
/* Implemented in nsterm, published in or needed from nsfns. */
|
||||
extern Lisp_Object Qfontsize;
|
||||
extern Lisp_Object ns_list_fonts (FRAME_PTR f, Lisp_Object pattern,
|
||||
int size, int maxnames);
|
||||
extern void ns_clear_frame (struct frame *f);
|
||||
|
||||
#ifdef __OBJC__
|
||||
extern const char *ns_font_to_xlfd (NSFont *font);
|
||||
#endif
|
||||
extern const char *ns_fontname_to_xlfd (const char *name);
|
||||
extern const char *ns_xlfd_to_fontname (const char *xlfd);
|
||||
|
||||
extern void check_ns (void);
|
||||
extern Lisp_Object ns_map_event_to_object ();
|
||||
extern Lisp_Object ns_string_from_pasteboard ();
|
||||
extern void ns_string_to_pasteboard ();
|
||||
extern void nxatoms_of_nsselect ();
|
||||
extern int ns_lisp_to_cursor_type ();
|
||||
extern Lisp_Object ns_cursor_type_to_lisp (int arg);
|
||||
extern Lisp_Object Qnone;
|
||||
|
||||
/* XColor defined in dispextern.h (we use color_def->pixel = NSColor id), but
|
||||
this causes an #include snafu, so we can't declare it.
|
||||
extern int ns_defined_color (struct frame *f, char *name, XColor *color_def,
|
||||
int alloc); */
|
||||
|
||||
#ifdef __OBJC__
|
||||
extern int ns_lisp_to_color (Lisp_Object color, NSColor **col);
|
||||
extern NSColor *ns_lookup_indexed_color (unsigned long idx, struct frame *f);
|
||||
extern unsigned long ns_index_color (NSColor *color, struct frame *f);
|
||||
extern void ns_free_indexed_color (unsigned long idx, struct frame *f);
|
||||
#endif
|
||||
|
||||
/* C access to ObjC functionality */
|
||||
extern void ns_release_object (void *obj);
|
||||
extern void ns_retain_object (void *obj);
|
||||
extern void *ns_alloc_autorelease_pool ();
|
||||
extern void ns_release_autorelease_pool ();
|
||||
|
||||
/* in nsmenu */
|
||||
extern void update_frame_tool_bar (FRAME_PTR f);
|
||||
extern void free_frame_tool_bar (FRAME_PTR f);
|
||||
extern void find_and_call_menu_selection (FRAME_PTR f,
|
||||
EMACS_INT menu_bar_items_used, Lisp_Object vector, void *client_data);
|
||||
extern Lisp_Object find_and_return_menu_selection (FRAME_PTR f,
|
||||
int keymaps,
|
||||
void *client_data);
|
||||
extern Lisp_Object ns_popup_dialog (Lisp_Object position, Lisp_Object contents,
|
||||
Lisp_Object header);
|
||||
|
||||
/* two more prototypes that should be moved to a more general include file */
|
||||
extern void set_frame_menubar (struct frame *f, int first_time, int deep_p);
|
||||
extern void x_set_window_size (struct frame *f, int change_grav,
|
||||
int cols, int rows);
|
||||
|
||||
/* From nsimage.m, needed in image.c */
|
||||
struct image;
|
||||
extern void *ns_image_from_XBM (unsigned char *bits, int width, int height);
|
||||
extern void *ns_image_for_XPM (int width, int height, int depth);
|
||||
extern void *ns_image_from_file (Lisp_Object file);
|
||||
extern int ns_load_image (struct frame *f, struct image *img,
|
||||
Lisp_Object spec_file, Lisp_Object spec_data);
|
||||
extern int ns_image_width (void *img);
|
||||
extern int ns_image_height (void *img);
|
||||
extern unsigned long ns_get_pixel (void *img, int x, int y);
|
||||
extern void ns_put_pixel (void *img, int x, int y, unsigned long argb);
|
||||
extern void ns_set_alpha (void *img, int x, int y, unsigned char a);
|
||||
|
||||
/* This in nsterm.m */
|
||||
extern unsigned long ns_get_rgb_color (struct frame *f,
|
||||
float r, float g, float b, float a);
|
||||
extern NSPoint last_mouse_motion_position;
|
||||
|
||||
#ifdef NS_IMPL_GNUSTEP
|
||||
extern char gnustep_base_version[]; /* version tracking */
|
||||
#endif
|
||||
|
||||
#define MINWIDTH 10
|
||||
#define MINHEIGHT 10
|
||||
|
||||
/* Screen max coordinate
|
||||
Using larger coordinates causes movewindow/placewindow to abort */
|
||||
#define SCREENMAX 16000
|
||||
|
||||
#define NS_SCROLL_BAR_WIDTH_DEFAULT [EmacsScroller scrollerWidth]
|
||||
/* This is to match emacs on other platforms, ugly though it is. */
|
||||
#define NS_SELECTION_COLOR_DEFAULT @"LightGoldenrod2";
|
||||
#define RESIZE_HANDLE_SIZE 12
|
||||
|
||||
/* Little utility macros */
|
||||
#define IN_BOUND(min, x, max) (((x) < (min)) \
|
||||
? (min) : (((x)>(max)) ? (max) : (x)))
|
||||
#define SCREENMAXBOUND(x) (IN_BOUND (-SCREENMAX, x, SCREENMAX))
|
||||
|
||||
/* 23: needed somewhere... */
|
||||
#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
|
||||
|
||||
|
||||
#endif /* HAVE_NS */
|
6598
src/nsterm.m
Normal file
6598
src/nsterm.m
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4877,8 +4877,12 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
|
|||
process_output_skip = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
nfds = select (max (max (max_process_desc, max_keyboard_desc),
|
||||
#ifdef HAVE_NS
|
||||
nfds = ns_select
|
||||
#else
|
||||
nfds = select
|
||||
#endif
|
||||
(max (max (max_process_desc, max_keyboard_desc),
|
||||
max_gpm_desc) + 1,
|
||||
&Available,
|
||||
#ifdef NON_BLOCKING_CONNECT
|
||||
|
|
|
@ -221,7 +221,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* In Carbon, asynchronous I/O (using SIGIO) can't be used for window
|
||||
events because they don't come from sockets, even though it works
|
||||
fine on tty's. */
|
||||
#ifdef HAVE_CARBON
|
||||
/* This seems to help in Ctrl-G detection under Cocoa, however at the cost
|
||||
of some quirks that may or may not bother a given user. */
|
||||
#if defined (HAVE_CARBON) || defined (COCOA_EXPERIMENTAL_CTRL_G)
|
||||
#define NO_SOCK_SIGIO
|
||||
#endif
|
||||
|
||||
|
@ -247,8 +249,21 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
/* Definitions for how to compile & link. */
|
||||
|
||||
/* Indicate that we are compiling for Mac OS X. */
|
||||
/* This is for the Carbon port. Under the NeXTstep port, this is still picked
|
||||
up during preprocessing, but is undone in config.in. */
|
||||
#ifndef HAVE_NS
|
||||
#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX
|
||||
#endif
|
||||
|
||||
/* Link in the Carbon or AppKit lib. */
|
||||
#ifdef HAVE_NS
|
||||
/* PENDING: lresolv is here because configure when testing #undefs res_init,
|
||||
a macro in /usr/include/resolv.h for res_9_init, not in stdc lib. */
|
||||
#define LIBS_MACGUI -framework AppKit -lresolv
|
||||
#define SYSTEM_PURESIZE_EXTRA 200000
|
||||
#define HEADERPAD_EXTRA 6C8
|
||||
#else
|
||||
#define HEADERPAD_EXTRA 690
|
||||
|
||||
#ifdef HAVE_CARBON
|
||||
|
||||
|
@ -274,16 +289,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
/* Link in the Carbon lib. */
|
||||
#ifdef HAVE_CARBON
|
||||
#define LIBS_CARBON -framework Carbon LIBS_IMAGE
|
||||
#define LIBS_MACGUI -framework Carbon LIBS_IMAGE
|
||||
#else
|
||||
#define LIBS_CARBON
|
||||
#endif
|
||||
#define LIBS_MACGUI
|
||||
#endif /* !HAVE_CARBON */
|
||||
#endif /* !HAVE_NS */
|
||||
|
||||
/* The -headerpad option tells ld (see man page) to leave room at the
|
||||
end of the header for adding load commands. Needed for dumping.
|
||||
0x690 is the total size of 30 segment load commands (at 56
|
||||
each). */
|
||||
#define LD_SWITCH_SYSTEM_TEMACS -prebind LIBS_CARBON -Xlinker -headerpad -Xlinker 690
|
||||
each); under Cocoa 31 commands are required. */
|
||||
#define LD_SWITCH_SYSTEM_TEMACS -prebind LIBS_MACGUI -Xlinker -headerpad -Xlinker HEADERPAD_EXTRA
|
||||
|
||||
#define C_SWITCH_SYSTEM_TEMACS -Dtemacs
|
||||
|
||||
|
@ -312,6 +328,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define OTHER_FILES macosx-app
|
||||
#endif
|
||||
|
||||
/* PENDING: can this target be specified in a clearer way? */
|
||||
#ifdef HAVE_NS
|
||||
#define OTHER_FILES ns-app
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the following so emacs symbols will not conflict with those
|
||||
in the System framework. Otherwise -prebind will not work. */
|
||||
|
|
13
src/syntax.c
13
src/syntax.c
|
@ -1,3 +1,4 @@
|
|||
#include <stdio.h>
|
||||
/* GNU Emacs routines to deal with syntax tables; also word and list parsing.
|
||||
Copyright (C) 1985, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
|
@ -298,6 +299,18 @@ char_quoted (charpos, bytepos)
|
|||
register int quoted = 0;
|
||||
int orig = charpos;
|
||||
|
||||
#ifdef HAVE_NS
|
||||
/* For some reason keeps getting called w/both 1, then segfaulting
|
||||
due to the definitions of DEC_BOTH and DEC_POS in character.h,
|
||||
which lead to decrementing below initial address and then examining
|
||||
character there. Need to investigate further.. */
|
||||
if (charpos < 2 || bytepos < 2)
|
||||
{
|
||||
//fprintf(stderr,"Returning because charpos = %d, bytepos = %d\n",charpos, bytepos);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
DEC_BOTH (charpos, bytepos);
|
||||
|
||||
while (charpos >= beg)
|
||||
|
|
|
@ -18,11 +18,11 @@ You should have received a copy of the GNU General Public License
|
|||
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
#if defined (DARWIN) || defined (MAC_OSX)
|
||||
#if defined (DARWIN) || defined (MAC_OSX) || defined (NS_IMPL_COCOA)
|
||||
#undef init_process
|
||||
#endif
|
||||
#include <sys/select.h>
|
||||
#if defined (DARWIN) || defined (MAC_OSX)
|
||||
#if defined (DARWIN) || defined (MAC_OSX) || defined (NS_IMPL_COCOA)
|
||||
#define init_process emacs_init_process
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -318,6 +318,8 @@ extern struct tty_display_info *gpm_tty;
|
|||
|
||||
|
||||
struct mac_display_info;
|
||||
struct ns_display_info;
|
||||
struct x_display_info;
|
||||
struct w32_display_info;
|
||||
|
||||
/* Terminal-local parameters. */
|
||||
|
@ -368,6 +370,7 @@ struct terminal
|
|||
struct x_display_info *x; /* xterm.h */
|
||||
struct w32_display_info *w32; /* w32term.h */
|
||||
struct mac_display_info *mac; /* macterm.h */
|
||||
struct ns_display_info *ns; /* nsterm.h */
|
||||
} display_info;
|
||||
|
||||
|
||||
|
|
|
@ -397,6 +397,8 @@ possible return values. */)
|
|||
return Qpc;
|
||||
case output_mac:
|
||||
return Qmac;
|
||||
case output_ns:
|
||||
return Qns;
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
|
|
|
@ -24,7 +24,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
so that we do not need to conditionalize the places in Emacs
|
||||
that set them. */
|
||||
|
||||
/* Causes a conflict on OS X 10.3 .*/
|
||||
#ifndef NS_IMPL_COCOA
|
||||
char *UP, *BC, PC;
|
||||
#endif
|
||||
|
||||
/* Interface to curses/terminfo library.
|
||||
Turns out that all of the terminfo-level routines look
|
||||
|
|
91
src/w32gui.h
91
src/w32gui.h
|
@ -21,66 +21,19 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define EMACS_W32GUI_H
|
||||
#include <windows.h>
|
||||
|
||||
#include "w32bdf.h"
|
||||
|
||||
/* Emulate widget_value from ../lwlib/lwlib.h, modified for Windows. */
|
||||
typedef void * XtPointer;
|
||||
typedef char Boolean;
|
||||
enum button_type
|
||||
/* Emulate XCharStruct. */
|
||||
typedef struct _XCharStruct
|
||||
{
|
||||
BUTTON_TYPE_NONE,
|
||||
BUTTON_TYPE_TOGGLE,
|
||||
BUTTON_TYPE_RADIO
|
||||
};
|
||||
typedef struct _widget_value
|
||||
{
|
||||
/* name of widget */
|
||||
Lisp_Object lname;
|
||||
char* name;
|
||||
/* value (meaning depend on widget type) */
|
||||
char* value;
|
||||
/* keyboard equivalent. no implications for XtTranslations */
|
||||
Lisp_Object lkey;
|
||||
char* key;
|
||||
/* Help string or nil if none.
|
||||
GC finds this string through the frame's menu_bar_vector
|
||||
or through menu_items. */
|
||||
Lisp_Object help;
|
||||
/* true if enabled */
|
||||
Boolean enabled;
|
||||
/* true if selected */
|
||||
Boolean selected;
|
||||
/* The type of a button. */
|
||||
enum button_type button_type;
|
||||
/* true if menu title */
|
||||
Boolean title;
|
||||
#if 0
|
||||
/* true if was edited (maintained by get_value) */
|
||||
Boolean edited;
|
||||
/* true if has changed (maintained by lw library) */
|
||||
change_type change;
|
||||
/* true if this widget itself has changed,
|
||||
but not counting the other widgets found in the `next' field. */
|
||||
change_type this_one_change;
|
||||
#endif
|
||||
/* Contents of the sub-widgets, also selected slot for checkbox */
|
||||
struct _widget_value* contents;
|
||||
/* data passed to callback */
|
||||
XtPointer call_data;
|
||||
/* next one in the list */
|
||||
struct _widget_value* next;
|
||||
#if 0
|
||||
/* slot for the toolkit dependent part. Always initialize to NULL. */
|
||||
void* toolkit_data;
|
||||
/* tell us if we should free the toolkit data slot when freeing the
|
||||
widget_value itself. */
|
||||
Boolean free_toolkit_data;
|
||||
short rbearing;
|
||||
short lbearing;
|
||||
short width;
|
||||
short ascent;
|
||||
short descent;
|
||||
} XCharStruct;
|
||||
|
||||
|
||||
/* we resource the widget_value structures; this points to the next
|
||||
one on the free list if this one has been deallocated.
|
||||
*/
|
||||
struct _widget_value *free_list;
|
||||
#endif
|
||||
} widget_value;
|
||||
/* Local memory management for menus. */
|
||||
#define local_heap (GetProcessHeap ())
|
||||
#define local_alloc(n) (HeapAlloc (local_heap, HEAP_ZERO_MEMORY, (n)))
|
||||
|
@ -89,6 +42,30 @@ typedef struct _widget_value
|
|||
#define malloc_widget_value() ((widget_value *) local_alloc (sizeof (widget_value)))
|
||||
#define free_widget_value(wv) (local_free ((wv)))
|
||||
|
||||
|
||||
enum w32_char_font_type
|
||||
{
|
||||
UNKNOWN_FONT = 0 /* FONT_TYPE_UNKNOWN */,
|
||||
ANSI_FONT,
|
||||
UNICODE_FONT,
|
||||
BDF_1D_FONT,
|
||||
BDF_2D_FONT
|
||||
};
|
||||
|
||||
typedef struct W32FontStruct {
|
||||
enum w32_char_font_type font_type;
|
||||
TEXTMETRIC tm;
|
||||
HFONT hfont;
|
||||
bdffont *bdf;
|
||||
int double_byte_p;
|
||||
XCharStruct max_bounds;
|
||||
XCharStruct scratch;
|
||||
/* Only store info for ascii chars, if not fixed pitch. */
|
||||
XCharStruct * per_char;
|
||||
} W32FontStruct;
|
||||
|
||||
typedef struct W32FontStruct XFontStruct;
|
||||
|
||||
/* Emulate X GC's by keeping color and font info in a structure. */
|
||||
typedef struct _XGCValues
|
||||
{
|
||||
|
|
|
@ -49,6 +49,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef MAC_OS
|
||||
#include "macterm.h"
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
|
||||
|
||||
Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configuration_p;
|
||||
|
|
68
src/xdisp.c
68
src/xdisp.c
|
@ -199,6 +199,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef MAC_OS
|
||||
#include "macterm.h"
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#endif
|
||||
|
||||
#include "font.h"
|
||||
|
||||
|
@ -209,7 +212,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define INFINITY 10000000
|
||||
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined(HAVE_NS) || defined (USE_GTK)
|
||||
extern void set_frame_menubar P_ ((struct frame *f, int, int));
|
||||
extern int pending_menu_activation;
|
||||
#endif
|
||||
|
@ -861,7 +864,7 @@ int display_hourglass_p;
|
|||
int hourglass_shown_p;
|
||||
|
||||
/* If non-null, an asynchronous timer that, when it expires, displays
|
||||
an hourglass cursor on all frames. */
|
||||
an hourglass cursor on all frames. */
|
||||
struct atimer *hourglass_atimer;
|
||||
|
||||
/* Number of seconds to wait before displaying an hourglass cursor. */
|
||||
|
@ -9462,7 +9465,32 @@ x_consider_frame_title (frame)
|
|||
if (! STRINGP (f->name)
|
||||
|| SBYTES (f->name) != len
|
||||
|| bcmp (title, SDATA (f->name), len) != 0)
|
||||
x_implicitly_set_name (f, make_string (title, len), Qnil);
|
||||
{
|
||||
#ifdef HAVE_NS
|
||||
if (FRAME_NS_P (f))
|
||||
{
|
||||
if (!MINI_WINDOW_P(XWINDOW(f->selected_window)))
|
||||
{
|
||||
if (EQ (fmt, Qt))
|
||||
ns_set_name_as_filename (f);
|
||||
else
|
||||
x_implicitly_set_name (f, make_string(title, len),
|
||||
Qnil);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
x_implicitly_set_name (f, make_string (title, len), Qnil);
|
||||
}
|
||||
#ifdef HAVE_NS
|
||||
if (FRAME_NS_P (f))
|
||||
{
|
||||
/* do this also for frames with explicit names */
|
||||
ns_implicitly_set_icon_type(f);
|
||||
ns_set_doc_edited(f, Fbuffer_modified_p
|
||||
(XWINDOW (f->selected_window)->buffer), Qnil);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9627,7 +9655,7 @@ update_menu_bar (f, save_match_data, hooks_run)
|
|||
if (FRAME_WINDOW_P (f)
|
||||
?
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined (HAVE_NS) || defined (USE_GTK)
|
||||
FRAME_EXTERNAL_MENU_BAR (f)
|
||||
#else
|
||||
FRAME_MENU_BAR_LINES (f) > 0
|
||||
|
@ -9686,10 +9714,10 @@ update_menu_bar (f, save_match_data, hooks_run)
|
|||
|
||||
/* Redisplay the menu bar in case we changed it. */
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined (HAVE_NS) || defined (USE_GTK)
|
||||
if (FRAME_WINDOW_P (f))
|
||||
{
|
||||
#ifdef MAC_OS
|
||||
{
|
||||
#if defined (MAC_OS) || defined (HAVE_NS)
|
||||
/* All frames on Mac OS share the same menubar. So only
|
||||
the selected frame should be allowed to set it. */
|
||||
if (f == SELECTED_FRAME ())
|
||||
|
@ -9700,11 +9728,11 @@ update_menu_bar (f, save_match_data, hooks_run)
|
|||
/* On a terminal screen, the menu bar is an ordinary screen
|
||||
line, and this makes it get updated. */
|
||||
w->update_mode_line = Qt;
|
||||
#else /* ! (USE_X_TOOLKIT || HAVE_NTGUI || MAC_OS || USE_GTK) */
|
||||
#else /* ! (USE_X_TOOLKIT || HAVE_NTGUI || MAC_OS || HAVE_NS || USE_GTK) */
|
||||
/* In the non-toolkit version, the menu bar is an ordinary screen
|
||||
line, and this makes it get updated. */
|
||||
w->update_mode_line = Qt;
|
||||
#endif /* ! (USE_X_TOOLKIT || HAVE_NTGUI || MAC_OS || USE_GTK) */
|
||||
#endif /* ! (USE_X_TOOLKIT || HAVE_NTGUI || MAC_OS || HAVE_NS || USE_GTK) */
|
||||
|
||||
unbind_to (count, Qnil);
|
||||
set_buffer_internal_1 (prev);
|
||||
|
@ -9815,7 +9843,7 @@ update_tool_bar (f, save_match_data)
|
|||
struct frame *f;
|
||||
int save_match_data;
|
||||
{
|
||||
#if defined (USE_GTK) || USE_MAC_TOOLBAR
|
||||
#if defined (USE_GTK) || defined (HAVE_NS) || USE_MAC_TOOLBAR
|
||||
int do_update = FRAME_EXTERNAL_TOOL_BAR (f);
|
||||
#else
|
||||
int do_update = WINDOWP (f->tool_bar_window)
|
||||
|
@ -10281,7 +10309,7 @@ redisplay_tool_bar (f)
|
|||
struct it it;
|
||||
struct glyph_row *row;
|
||||
|
||||
#if defined (USE_GTK) || USE_MAC_TOOLBAR
|
||||
#if defined (USE_GTK) || defined (HAVE_NS) || USE_MAC_TOOLBAR
|
||||
if (FRAME_EXTERNAL_TOOL_BAR (f))
|
||||
update_frame_tool_bar (f);
|
||||
return 0;
|
||||
|
@ -11501,6 +11529,10 @@ redisplay_internal (preserve_echo_area)
|
|||
/* Resized active mini-window to fit the size of what it is
|
||||
showing if its contents might have changed. */
|
||||
must_finish = 1;
|
||||
/* PENDING: this causes all frames to be updated, which seems unnecessary
|
||||
since only the current frame needs to be considered. This function needs
|
||||
to be rewritten with two variables, consider_all_windows and
|
||||
consider_all_frames. */
|
||||
consider_all_windows_p = 1;
|
||||
++windows_or_buffers_changed;
|
||||
++update_mode_lines;
|
||||
|
@ -13913,7 +13945,7 @@ redisplay_window (window, just_this_one_p)
|
|||
if (FRAME_WINDOW_P (f))
|
||||
{
|
||||
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (MAC_OS) \
|
||||
|| defined (USE_GTK)
|
||||
|| defined (HAVE_NS) || defined (USE_GTK)
|
||||
redisplay_menu_p = FRAME_EXTERNAL_MENU_BAR (f);
|
||||
#else
|
||||
redisplay_menu_p = FRAME_MENU_BAR_LINES (f) > 0;
|
||||
|
@ -13928,7 +13960,7 @@ redisplay_window (window, just_this_one_p)
|
|||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (FRAME_WINDOW_P (f))
|
||||
{
|
||||
#if defined (USE_GTK) || USE_MAC_TOOLBAR
|
||||
#if defined (USE_GTK) || defined (HAVE_NS) || USE_MAC_TOOLBAR
|
||||
redisplay_tool_bar_p = FRAME_EXTERNAL_TOOL_BAR (f);
|
||||
#else
|
||||
redisplay_tool_bar_p = WINDOWP (f->tool_bar_window)
|
||||
|
@ -17072,6 +17104,11 @@ display_menu_bar (w)
|
|||
return;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NS
|
||||
if (FRAME_NS_P (f))
|
||||
return;
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef USE_X_TOOLKIT
|
||||
xassert (!FRAME_WINDOW_P (f));
|
||||
init_iterator (&it, w, -1, -1, f->desired_matrix->rows, MENU_FACE_ID);
|
||||
|
@ -22539,7 +22576,10 @@ display_and_set_cursor (w, on, hpos, vpos, x, y)
|
|||
/* Switch the display of W's cursor on or off, according to the value
|
||||
of ON. */
|
||||
|
||||
static void
|
||||
#ifndef HAVE_NS
|
||||
static
|
||||
#endif
|
||||
void
|
||||
update_window_cursor (w, on)
|
||||
struct window *w;
|
||||
int on;
|
||||
|
|
56
src/xfaces.c
56
src/xfaces.c
|
@ -244,6 +244,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define check_x check_mac
|
||||
#endif /* MAC_OS */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
#include "nsterm.h"
|
||||
#undef FRAME_X_DISPLAY_INFO
|
||||
#define FRAME_X_DISPLAY_INFO FRAME_NS_DISPLAY_INFO
|
||||
#define x_display_info ns_display_info
|
||||
#define FRAME_X_FONT_TABLE FRAME_NS_FONT_TABLE
|
||||
#define check_x check_ns
|
||||
#define x_list_fonts ns_list_fonts
|
||||
#define GCGraphicsExposures 0
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#include "buffer.h"
|
||||
#include "dispextern.h"
|
||||
#include "blockinput.h"
|
||||
|
@ -556,6 +567,10 @@ static void x_free_gc P_ ((struct frame *, GC));
|
|||
extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int));
|
||||
#endif /* WINDOWSNT */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
extern Lisp_Object ns_list_fonts P_ ((struct frame *, Lisp_Object, int, int));
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef USE_X_TOOLKIT
|
||||
static void x_update_menu_appearance P_ ((struct frame *));
|
||||
|
||||
|
@ -766,6 +781,31 @@ x_free_gc (f, gc)
|
|||
|
||||
#endif /* WINDOWSNT */
|
||||
|
||||
#ifdef HAVE_NS
|
||||
/* NS emulation of GCs */
|
||||
|
||||
static INLINE GC
|
||||
x_create_gc (f, mask, xgcv)
|
||||
struct frame *f;
|
||||
unsigned long mask;
|
||||
XGCValues *xgcv;
|
||||
{
|
||||
GC gc = xmalloc (sizeof (*gc));
|
||||
if (gc)
|
||||
bcopy(xgcv, gc, sizeof(XGCValues));
|
||||
return gc;
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
x_free_gc (f, gc)
|
||||
struct frame *f;
|
||||
GC gc;
|
||||
{
|
||||
if (gc)
|
||||
xfree (gc);
|
||||
}
|
||||
#endif /* HAVE_NS */
|
||||
|
||||
#ifdef MAC_OS
|
||||
/* Mac OS emulation of GCs */
|
||||
|
||||
|
@ -871,9 +911,12 @@ init_frame_faces (f)
|
|||
#endif
|
||||
#ifdef MAC_OS
|
||||
if (!FRAME_MAC_P (f) || FRAME_MAC_WINDOW (f))
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
if (!FRAME_NS_P (f) || FRAME_NS_WINDOW (f))
|
||||
#endif
|
||||
if (!realize_basic_faces (f))
|
||||
abort ();
|
||||
abort ();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1268,6 +1311,10 @@ defined_color (f, color_name, color_def, alloc)
|
|||
#ifdef MAC_OS
|
||||
else if (FRAME_MAC_P (f))
|
||||
return mac_defined_color (f, color_name, color_def, alloc);
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
else if (FRAME_NS_P (f))
|
||||
return ns_defined_color (f, color_name, color_def, alloc, 1);
|
||||
#endif
|
||||
else
|
||||
abort ();
|
||||
|
@ -1558,6 +1605,7 @@ free_face_colors (f, face)
|
|||
struct frame *f;
|
||||
struct face *face;
|
||||
{
|
||||
/* PENDING(NS): need to do something here? */
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
if (face->colors_copied_bitwise_p)
|
||||
return;
|
||||
|
@ -2754,7 +2802,7 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
|
|||
}
|
||||
else if (EQ (keyword, QCstipple))
|
||||
{
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
|
||||
Lisp_Object pixmap_p = Fbitmap_spec_p (value);
|
||||
if (!NILP (pixmap_p))
|
||||
to[LFACE_STIPPLE_INDEX] = value;
|
||||
|
@ -3262,14 +3310,14 @@ FRAME 0 means change the face on all frames, and change the default
|
|||
}
|
||||
else if (EQ (attr, QCstipple))
|
||||
{
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
|
||||
if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)
|
||||
&& !NILP (value)
|
||||
&& NILP (Fbitmap_spec_p (value)))
|
||||
signal_error ("Invalid stipple attribute", value);
|
||||
old_value = LFACE_STIPPLE (lface);
|
||||
LFACE_STIPPLE (lface) = value;
|
||||
#endif /* HAVE_X_WINDOWS */
|
||||
#endif /* HAVE_X_WINDOWS || HAVE_NS */
|
||||
}
|
||||
else if (EQ (attr, QCwidth))
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue