aboutsummaryrefslogtreecommitdiffstats
path: root/nextstep/README
diff options
context:
space:
mode:
authorAnders Lindgren2016-02-20 16:24:40 +0100
committerAnders Lindgren2016-02-20 16:24:40 +0100
commitc5f72aa573bc45b82ad6479ae0eba5ffc7916fb9 (patch)
tree2d8062ffe5f85110144978cc05bd0805b57ef036 /nextstep/README
parent6de26a78de83ca9a8f096056e91c14fdb2aedc84 (diff)
downloademacs-c5f72aa573bc45b82ad6479ae0eba5ffc7916fb9.tar.gz
emacs-c5f72aa573bc45b82ad6479ae0eba5ffc7916fb9.zip
Update NextStep readme and add wish list.
* nextstep/README: Rewritten from scratch. New sections on "History", "Overview of Cocoa and Objective-C", "Guidelines", "Tracing Support", and "GNUStep". Expanded the "See Also" section. * nextstep/WISHLIST: New file containing list of issues and ideas associated with the NS port of Emacs.
Diffstat (limited to 'nextstep/README')
-rw-r--r--nextstep/README102
1 files changed, 99 insertions, 3 deletions
diff --git a/nextstep/README b/nextstep/README
index 45b9b23ee10..c16d55b35b9 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -1,4 +1,100 @@
1This directory contains files needed to build Emacs on Nextstep-based
2platforms, including GNUstep and Mac OS X (using the Cocoa libraries).
3 1
4See the INSTALL file in this directory for compilation instructions. 2 NS -- the Cocoa interface for OS X and compatible systems
3 ---------------------------------------------------------
4
5This directory contains files needed to build Emacs on system based on
6NextStep (NS), including OS X (Mac) and GNUstep, using the Cocoa API.
7
8
9 HISTORY
10
11Up to Emacs 22, the OS X interface was implemented using the C-based
12Carbon API. Starting with Emacs 23, the interface was rewritten in
13Objective-C using the Cocoa API. Meanwhile, the Carbon interface has
14been maintained independently under the name "mac".
15
16
17 OVERVIEW OF COCOA AND OBJECTIVE-C
18
19Cocoa is an API for the Objective-C language, an objective oriented
20superset of C. Anybody with experience with iOS or modern OS X
21application development should feel at home.
22
23A method call in Objective-C differs from most other languages in the
24fact that it doesn't have a normal name. Instead, the method name is
25made up of the name of each parameter. An exception to this rule are
26methods without parameters.
27
28The following calls a method in the object `anObject'.
29
30 [anObject alpha:1 beta:2 gamma:3];
31
32Classes are declared like the following:
33
34 @interface AClassName
35 {
36 // A class method.
37 + (TYPE)name1:(TYPE)param1
38
39 // An object method.
40 - (TYPE)name1:(TYPE)param1 name2:(TYPE)param2;
41 }
42 @end
43
44
45 GUIDELINES
46
47* Adhere the to the FSF philosophy that a feature in GNU software
48 should not only be available on non-free systems.
49
50* People with varying Cocoa and Objective-C skills will read and
51 modify the NS code over a long period of time. Keep the code simple
52 and avoid language constructs that makes the code hard to maintain.
53
54* Don't use macros and types intended for the XCode Interface Builder,
55 like `IBAction'.
56
57* The NS interface should work on all version of OS X from 10.6.8
58 (Snow Leopard) to the latest official release.
59
60* Under OS X, it is possible to build Emacs using NS, X11, or console
61 only. A new OS X feature should work in all appropriate builds.
62
63
64 TRACING SUPPORT
65
66The NS interface features a printf-based trace package that prints the
67call tree of selected functions in the Cocoa interface, plus various
68extra information. It can be enabled by uncommenting the line
69defining `NSTRACE_ENABLED' in "nsterm.h". To enable more output,
70uncomment the lines defining symbols starting with `NSTRACE_GROUP'.
71
72
73 GNUSTEP AND OTHER COMPATIBLE SYSTEMS
74
75The NS interface works on system compatible with OS X, for example
76GNUstep. Even though they are less frequently used, this is important
77for a number of reasons:
78
79* It supports the GNUstep project and provides an Emacs with the same
80 look-and-feel as the rest of the system.
81
82* This allows other Emacs developers to test their changes on the NS
83 interface without having access to an OS X machine.
84
85* If a feature in the NS interface work on free systems like GNUstep,
86 this meets the FSF requirement that features in GNU software should
87 not only be available on non-free systems.
88
89
90 SEE ALSO
91
92The src/ns... files contains the C and Objective-C parts.
93
94The lisp/term/ns-win.el file contains the lisp part of the NS
95interface.
96
97The INSTALL file in this directory for compilation instructions.
98
99The WISHLIST file in this directory for a list of ideas for future
100development of the NS interface.