aboutsummaryrefslogtreecommitdiffstats
path: root/nextstep
diff options
context:
space:
mode:
authorStefan Monnier2010-10-15 17:55:33 -0400
committerStefan Monnier2010-10-15 17:55:33 -0400
commit0c747cb143fa227e78f350ac353d703f489209df (patch)
tree5b434055c797bd75eaa1e3d9d0773e586d44daee /nextstep
parenta01a7932080e8a6e7bc8472c58cefabcc2c37df3 (diff)
parentaa095b2db98ae149737f8de00ee733b1d257ed33 (diff)
downloademacs-0c747cb143fa227e78f350ac353d703f489209df.tar.gz
emacs-0c747cb143fa227e78f350ac353d703f489209df.zip
Merge from trunk
Diffstat (limited to 'nextstep')
-rw-r--r--nextstep/AUTHORS59
-rw-r--r--nextstep/ChangeLog17
-rw-r--r--nextstep/DEV-NOTES159
-rw-r--r--nextstep/FOR-RELEASE38
-rw-r--r--nextstep/README240
5 files changed, 13 insertions, 500 deletions
diff --git a/nextstep/AUTHORS b/nextstep/AUTHORS
deleted file mode 100644
index 52fc91f78fa..00000000000
--- a/nextstep/AUTHORS
+++ /dev/null
@@ -1,59 +0,0 @@
1In addition to the folks listed in ../AUTHORS responsible for GNU Emacs itself,
2the NeXTstep port owes to the following people:
3
4Carl Edman
5 original author and maintainer, mainly UI
6Michael Brouwer
7 heavy contributor, input handling and other areas
8Christian Limpach
9 help / maintenance on NeXTstep
10Scott Bender
11 OpenStep, Rhapsody ports
12Christophe de Dinechin
13 MacOS X port
14Adrian Robert
15 GNUstep port, update Emacs 20 -> 21+
16
17Joe Reiss
18 popup menu, dialog boxes; icons
19Andrew Athan
20 font panel integration
21Scott Byer
22 improved rendering code
23Scott Hess
24 keyboard handling suggestions
25
26Rahul Abrol
27 "hide others" patch
28Adam Ratcliffe
29 preferences panel documentation
30Peter Dyballa
31 assistance with non-ASCII rendering and keyboard handling
32David M. Cooke
33 fix to XPM crash bug
34Carsten Bormann
35 initial patch and assistance getting dired working for non-ASCII filenames
36Andrew Moore
37 assistance on ns-mark-nav extension
38
39The GNUstep port was made possible through the assistance of Adam
40Fedor, Fred Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas
41Matton, and Riccardo Mottola. Leigh Smith maintained the SourceForge
42project for a period.
43
44Suggestions from Darcy Brockbank, Timothy Bissell, Scott Byer, David
45Griffiths, Scott Hess, Eberhard Mandler, John C. Randolph, and Bradley
46Taylor all helped things along at one point or another. Axel Seibert
47<seiberta@@informatik.tu-muenchen.de> and Paul J. Sanchez
48<paul@@whimsy.umsl.edu> offered their time and machines to make a
49binary release possible.
50
51We would also like to thank a number of people who kept up the
52constant supply of bug reports, suggested features and praise: Hardy
53Mayer, Gisli Ottarsson, Anthony Heading, David Bau, Jamie Zawinski,
54Martin Moncrieffe, Simson L. Garfinkel, Richard Stallman, Stephen
55Anderson, Ivo Welch, Magnus Nordborg, Tom Epperly, Andreas Koenig,
56Yves Arrouye, Anil Somayaji, Gregor Hoffleit; and the few hundred
57other people on the mailing list from whom we didn't hear much, but
58the presence of which assured us that maybe this project was actually
59worth doing.
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog
index 17df993cab7..ac060bbcee4 100644
--- a/nextstep/ChangeLog
+++ b/nextstep/ChangeLog
@@ -1,3 +1,15 @@
12010-10-13 Glenn Morris <rgm@gnu.org>
2
3 * README: Remove information duplicated in AUTHORS.
4 Move historical information to new file ../etc/NEXTSTEP.
5 * AUTHORS: Merge into ./etc/NEXTSTEP and remove file.
6
72010-10-12 Glenn Morris <rgm@gnu.org>
8
9 * FOR-RELEASE: Merge into ../etc/TODO.
10
11 * DEV-NOTES: Move to ../admin/notes/nextstep.
12
12010-05-07 Chong Yidong <cyd@stupidchicken.com> 132010-05-07 Chong Yidong <cyd@stupidchicken.com>
2 14
3 * Version 23.2 released. 15 * Version 23.2 released.
@@ -176,10 +188,9 @@
176 188
177;; Local Variables: 189;; Local Variables:
178;; coding: utf-8 190;; coding: utf-8
179;; add-log-time-zone-rule: t
180;; End: 191;; End:
181 192
182 Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. 193 Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
183 194
184 This file is part of GNU Emacs. 195 This file is part of GNU Emacs.
185 196
@@ -195,5 +206,3 @@
195 206
196 You should have received a copy of the GNU General Public License 207 You should have received a copy of the GNU General Public License
197 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 208 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
198
199;; arch-tag: 963ee08e-8e76-485f-9cfb-65a4333a073c
diff --git a/nextstep/DEV-NOTES b/nextstep/DEV-NOTES
deleted file mode 100644
index 462101f9abf..00000000000
--- a/nextstep/DEV-NOTES
+++ /dev/null
@@ -1,159 +0,0 @@
1This file summarizes primary aspects of the NS port architecture. If
2possible, it should be updated for changes.
3
4Currently it summarizes the state as of:
5
6 summer 2008 shortly after merging to trunk
7
8
9
10Startup
11-------
12
13Init sequence:
14 emacs.c: ns_alloc_autorelease_pool() nsterm.m
15 emacs.c: ns_init_paths() nsterm.m
16 - override EMACSLOADPATH, etc. so resources can be found in-bundle
17 emacs.c: init_display() dispnew.c
18 - sets Vwindow_system (window-system) to 'ns
19 emacs.c: loadup.el -> startup.el -> ns-initialize-window-system
20 -> x-open-connection (nsfns.m)
21 - ns-list-services
22 -> nsterm.m: ns_term_init()
23 - EmacsApp sharedApplication
24 - read NS defaults (org.gnu.Emacs.plist)
25 - init X-style color list
26 - ns_create_terminal()
27 - NSApp run (goes to applicationDidFinishLaunching which terminates
28 event loop -- see below)
29
30
31
32Event Loop
33----------
34
35In an NS application, the event loop is normally managed by system and all
36user code is event-driven. [NSApp run] is called by user and never returns.
37
38In Emacs, the event loop is managed by emacs itself.
39
40The NS port mediates between these two styles by intercepting the NS event
41dispatch at [NSApp sendEvent]. If a special event is detected, the event loop
42is broken, and control returned to Emacs. This special event is sent by
43ns_send_appdefined, which is called under these circumstances:
44
45 - if a user input event is received
46 - when a timeout fires
47
48NS event processing is instigated from Emacs through ns_select() and
49ns_read_socket() in nsterm.m. Parts of the codepaths leading to these
50functions are:
51
52
53 keyboard.c:read_avail_input()
54 -> ns_read_socket (ns_send_appdefined) -> [NSApp run]
55
56 process.c:wait_reading_process_output()
57 -> ns_select -> gobble_input (global inNsSelect=1)
58 -> ns_read_socket (ns_send_appdefined if !expected) -> [NSApp run]
59
60 sysdep.c:sys_select() -> read_input_waiting()
61 -> ns_read_socket (send_appdefined) -> [NSApp run]
62 [this codepath may not be used]
63
64
65Currently ctrl-g is not detected in as many circumstances as other emacsen.
66It is not certain whether this is due to the means of event loop integration,
67or errors of omission in the NS code. This is an area for improvement.
68Also, see the article here and its containing thread:
69
70http://article.gmane.org/gmane.emacs.devel/92021/match=handling%5fsignal
71
72
73
74
75Text Rendering and Font Handling
76--------------------------------
77
78nsfont.m implements the font driver, responsible for managing fonts and
79rendering text. Fonts are obtained through NSFontManager. Rendering must be
80done at a low level due to emacs' fine control over this process, therefore
81there are different approachs under Cocoa and GNUstep. Under GNUstep, the
82original NeXT Display PostScript (DPS) APIs are available and used. Under
83Cocoa, these were removed and Quartz drawing functions replaced them.
84
85In both cases, font glyphs are accessed through UTF8 character
86representations. It would be preferable to use unicode indices, but prior
87attempts at this have failed.
88
89Multi-script fontsets are auto-created in nsfont_make_fontset_for_font() using
90the facilities of NSTextStorage and NSLayoutManager.
91
92
93Object Architecture
94-------------------
95
96Unlike the other GUIs, the NS interface is based on a high-level and
97object-oriented API. This creates some tension in the code because emacs
98itself has been architected around the low-level Xlib and Xt APIs. The NS
99port tries to strike a balance between simplifying code on its side using OO
100features, and keeping code as similar as possible to other ports to ease
101maintenance. The following are the main classes (see nsterm.h):
102
103EmacsApp : NSApplication
104 - event loop integration, interapp comms point for Finder (NSWorkspace) msgs,
105 Services
106 - one global instance (NSApp)
107 - nsterm.m
108
109EmacsView : NSView <TextInput>
110 - handles rendering of text and fringe, interapp comms for drag/drop
111 - instance for each frame
112 - child of window's content view
113 - nsterm.m
114
115EmacsWindow : NSWindow
116 - utility override for resize handling
117
118EmacsScroller : NSScroller
119 - instance for each emacs window, renders scrollbar
120 - child of window's content view
121 - nsterm.m
122
123EmacsImage : NSImage
124 - image rendering, toolbar icons, stippling, fringe bitmaps
125 - instance for each image
126 - nsimage.m
127
128EmacsMenu : NSMenu
129 - menu management
130 - one tree of instances for menubar, one instance for each popup menu
131 - nsmenu.m
132
133EmacsToolbar : NSToolbar
134 - toolbar management, one instance for each frame
135 - nsmenu.m
136
137
138EmacsDialogPanel : NSPanel
139 - popup dialogs, one instance for each
140 - nsmenu.m
141
142EmacsTooltip : NSObject
143 - tooltip popups, one instance for each
144 - nsmenu.m
145
146EmacsGlyphStorage : NSObject <NSGlyphStorage>
147 - utility for text rendering
148 - nsfont.m
149
150EmacsPrefsController : NSObject
151 - utility for preferences panel management, one global instance
152 - nsterm.m
153 - nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib
154 - nextstep/GNUstep/Emacs.base/Resources/preferences.gorm
155
156EmacsSavePanel : NSSavePanel
157EmacsOpenPanel : NSOpenPanel
158 - utility override for panel notifications
159
diff --git a/nextstep/FOR-RELEASE b/nextstep/FOR-RELEASE
deleted file mode 100644
index 0f8a6534ad0..00000000000
--- a/nextstep/FOR-RELEASE
+++ /dev/null
@@ -1,38 +0,0 @@
1-*- outline -*-
2
3
4* CURSOR BUGS:
5
6** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back up
7 on top of all others
8
9
10* OTHER BUGS
11
12** free_frame_resources, face colors
13
14** numeric keysetting bug
15
16** http://debbugs.gnu.org/ns
17
18
19* MAC-RELATED:
20
21** open file:/// URLs
22
23** put frame autopositioning into C code somewhere -- if loc = same, offset
24
25** automap ctrl-mouse-1 to mouse-3
26
27** deal with Finder aliases somehow
28
29** Ctrl-F2 won't pull up menus
30
31
32* OTHER / LOW PRIORITY:
33
34** better recog of unicode scripts / Greek / composition
35
36** Exec-dump not working on GNUstep (so slow startup).
37
38** undo for color-drag face customization
diff --git a/nextstep/README b/nextstep/README
index 74c00fbfbd5..1ff2a4dd921 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -10,19 +10,6 @@ Cocoa libraries.
10 10
11See the INSTALL file in this directory for compilation instructions. 11See the INSTALL file in this directory for compilation instructions.
12 12
13Those primarily responsible for the port were, in chronological order:
14Michael Brouwer, Carl Edman, Christian Limpach, Scott Bender,
15Christophe de Dinechin, and Adrian Robert.
16
17Peter Dyballa assisted in a variety of ways to improve text rendering
18and keyboard handling, Adam Ratcliffe documented the Preferences
19panel, David M. Cooke contributed fixes to XPM handling, and Carsten
20Bormann helped get dired working for non-ASCII filenames. People who
21provided additional assistance include Adam Fedor, Fred Kiefer, M. Uli
22Klusterer, Alexander Malmberg, Jonas Matton, and Riccardo Mottola.
23See AUTHORS file and "Release History" below for more information.
24
25
26Requirements 13Requirements
27------------ 14------------
28MacOS X 10.4 or later 15MacOS X 10.4 or later
@@ -33,233 +20,6 @@ GNUstep "Startup 0.23" or later
33Tested on GNU/Linux, should work on other systems, perhaps with minor 20Tested on GNU/Linux, should work on other systems, perhaps with minor
34build tweaking. 21build tweaking.
35 22
36
37Background
38----------
39Within Emacs, the port and its code are referred to using the term
40"Nextstep", despite the fact that no system or API has been released
41under this name in more than 10 years. Here's some background on why:
42
43NeXT, Inc. introduced the NeXTstep API with its computer and operating
44system in the late 1980's. Later on, in collaboration with Sun, this
45API was published as a specification called OpenStep. The GNUstep
46project started in the early 1990's to provide a free implementation
47of this API. Later on, Apple bought NeXT (some would say "NeXT bought
48Apple") and made OpenStep the basis of OS X, calling the API "Cocoa".
49Since then, Cocoa has evolved beyond the OpenStep specification, and
50GNUstep has followed it.
51
52Thus, calling this port "OpenStep" is not technically accurate, and in
53the absence of any other determinant, we are using the term
54"Nextstep", both because it signifies the original inspiration that
55created these APIs, and because all of the classes and functions still
56begin with the letters "NS".
57
58(See http://en.wikipedia.org/wiki/Nextstep)
59
60This Emacs port was first released in the early 1990's on the NeXT
61computer, and was successively updated to OpenStep, Rhapsody, OS X,
62and then finally GNUstep, tracking GNU emacs core releases in the
63meantime.
64
65
66Release History
67---------------
68
691990-1992 1.0-3.0 (?) Michael Brouwer's socket/terminal communication
70 based version (GUI ran as a separate process.)
71
721993/10/25 3.0.1 Last (?) release of Brouwer version. Supports
73 NeXTstep 3.x and below.
74
751994/04/24 4.0 Carl Edman's version using direct API following
76 the X-Windows port. NeXTstep 3.x only.
77
781995/06/15 4.1 Second (and last) Carl Edman release, based on
79 Emacs 19.28.
80
811996/07/28 4.2 First Christian Limpach release, based on
82 Emacs 19.29.
83
84?? 5.0 ??
85
861997/12/?? 6.0b1 Ported to OpenStep by Scott Bender. Updated
87 to Emacs 20.2.
88
89?? 6.0b2 (?) Scott Bender: ported to Rhapsody.
90
911999/05/?? 6.0b3 Scott Bender: "OS X Server", Emacs 20.3.
92
932001/06/25 7.0 Ported to MacOS X (10.1) by Christophe de
94 Dinechin. Release based on Emacs 20.7. Hosting
95 moved to SourceForge.
96
972002/01/03 7.0.1 Bug fixes.
98
992002/08/27 7.0.2 Jaguar (OS X 10.2) support. Added an autoconf
100 option for sys_nerr being in stdio. Added
101 libncurses to the build libraries. Fixed a
102 problem with ns-alternate-is-meta. Changed the
103 icon color to blue, since Jaguar is yellow.
104
1052004/10/07 8.0-pre1 Ported to GNUstep by Adrian Robert.
106
1072004/11/04 8.0-pre2 Restored functionality on OS X (menu code
108 cleanup). Improved scrollbar handling and
109 paste from other applications. File icons
110 obtained properly from NSWorkspace. Dropped
111 Gorm and Nib files. Background refresh bug
112 fixed (in GNUstep). Various small fixes and
113 code cleanups. Now starts up under Art.
114
1152005/01/27 8.0-pre3 Bold and italic faces supported. Cursor and
116 mouse highlighting rendering bugs
117 fixed. Drag/drop and cut/paste interaction
118 w/external apps fixed. File load/save panels
119 available. Stability and rendering speed
120 improvements. Some ObjC and VC mode bugs fixed.
121
1222005/02/27 8.0-rc1 Dynamic path detection at startup so Emacs.app
123 can be moved anywhere. Added binary packages
124 and simplified source installation to running
125 two scripts. Thorough cleanup of menu code;
126 now fully functional. Fixed all detected
127 memory leaks. Minor frame focus and title
128 bugs fixed.
129
1302005/03/30 8.0-rc2 "Configure" info directory now uses dynamic
131 path setting, so info files can go under .app.
132 Improved select() handling and PTY fixes so
133 shell mode and tramp run smoothly.
134 Significant rendering optimizations under
135 GNUstep, and now works under Art backend.
136 Non-Latin text rendering works (but not
137 fontsets), and LEIM is bundled. UTF8 is used
138 for clipboard interaction.
139 Arrow cursor now used on scrollbar.
140 objc-mode and tramp now bundled in site-lisp.
141
1422005/05/30 8.0-rc3 Fixed bug with parsing of "easymenu" menus.
143 Many problems with modes such as SLIME, MatLab,
144 and Planner go away. Improved scrollbar
145 handling and rendering speed. Color panel
146 and other bug fixes. mac-fix-env utility.
147 Font handling improvements (OS X 10.3, 10.4):
148 - heed 'GSFontAntiAlias' default
149 - heed system antialiasing threshold
150 - added 'UseQuickdrawSmoothing' default to
151 invoke less heavy antialiasing
152
1532005/07/05 8.0-rc4 Added a Preferences panel. Cleaned up
154 rendering for synthetic italic fonts. Further
155 improved menu parsing. Use system highlight
156 color. Added previous- and next-mark history
157 navigation commmands bound to M-p,M-n.
158 Miscellaneous bug fixes.
159
1602005/08/04 8.0-rc5 All internal string handling changed to UTF-8.
161 This means menu items, color and color list
162 names, and a few other things will now display
163 properly. It does NOT mean UTF-8 filenames
164 are displayed correctly in the minibuffer.
165 Also relating to UTF-8, contents of files
166 using this coding can now be displayed (though
167 not auto-recognized; add extensions to your
168 default coding alist). Limited mac-roman
169 support was also added (also sans recognition).
170 Certain characters are not displayed properly
171 due to a translation problem. (UTF-8 based on
172 work by Otfried Cheong; mac-roman from
173 emacs-21.) Partial support for "dead-key"
174 handling now added. Transparency (e.g., M-x
175 set-background-color ARGB88FFFFFF) improved:
176 only the background is made transparent.
177 Cursor drawing glitches fixed. Preferences
178 handling improved. Fixed some portability
179 problems on Tiger and Puma.
180
1812005/09/12 8.0 Bundled ispell on OS X. Minor bug fixes and
182 stability improvements. Compiles under gcc-4.
183
1842005/09/26 8.0.1 Correct clipped rendering for synthetic
185 italics. Include the info directory.
186 Fix grabenv. Bundle whitespace package.
187
1882005/10/27 8.0.2 Correct rendering for wide characters during
189 cursor movement. Fix bungled hack in ispell
190 bundling.
191
1922005/11/05 9.0-pre1 Updated to latest Emacs CVS code on unicode-2
193 branch (proposed to be released 2006/2007 as
194 Emacs 23).
195
1962005/11/11 9.0-pre2 Fix crashes for deiconifying and loading
197 certain images. Improve vertical font metrics
198 (fixes inaccurate page up/down, window size,
199 and partial lines). Support better remapping
200 of Alt/Opt and remapping of Command. More
201 insistent defaulting of scrollbar to right.
202 Modest improvements to build process.
203
2042006/04/22 9.0-pre2a Stopgap interim release to sync w/latest
205 unicode-2 CVS. Includes XPM and partial
206 toolbar support.
207
2082006/06/08 9.0-pre3 Major upgrade to keyboard handling:
209 system-selected compositional input methods
210 should now work, as well as more keys /
211 keyboards. XPM, toolbar, and tooltip support.
212 Some improvements to scrollbars, zoom, italic
213 rendering, pasting, Color panel. Added function
214 ns-set-background-alpha to work around
215 inability to customize with numeric colors.
216
2172006/12/24 9.0-rc1 Reworked font handling and text rendering to
218 use Kenichi Handa's new font back-end system.
219 Font sets are now supported and automatically
220 created when a font is selected. Added recent
221 X11 colors to Emacs.clr (remove
222 ~/Library/Colors/Emacs.clr to pick up). Added
223 ns-option-modifier, ns-control-modifier,
224 ns-function-modifier customization variables.
225 Update menus to Emacs 21+ conventions. Right
226 mouse button now generates mouse-3 events.
227 Various bug fixes and rendering improvements.
228
2292007/09/10 9.0-rc2 Improve menubar, popup menu, and scrollbar
230 behavior, let accented char entry work in
231 isearch, follow system keymap for shortcut
232 keys, fix border and box drawing, remove
233 glitches in modeline drawing, support
234 overstrike for unavailable bold fonts, fix XPM
235 related crasher bugs. Incremental font
236 metrics caching and other performance
237 improvements. Shared-lisp builds now possible.
238
2392007/09/20 9.0-rc2a Interim release. New features: composed
240 character display, colored fringe bitmaps,
241 colored relief drawing, dynamic resizing,
242 Bug fixes: popup menu position and selection,
243 font width calculation, face color adaptation
244 to background, submenu keyboard navigation.
245 NOT TESTED ON GNUSTEP.
246
2472007/11/19 9.0-rc3 Integrated the multi-TTY functionality from
248 emacs core (however, mixed TTY and GUI
249 sessions are not working yet). Support 10.5.
250 Give site-lisp load precedence over lisp and
251 add a compile option to prefer an additional
252 directory, use miniaturized miniwindow images
253 in some cases, rename cursor types for
254 consistency w/other emacs terms, improved font
255 selection for symbol scripts.
256 Bug fixes: fringe and bitmap, frame deletion,
257 resizing, cursor blink, workspace open-file,
258 image backgrounds, toolbar item enablement,
259 context menu positioning.
260
2612008/07/15 (none) Merge to GNU Emacs CVS trunk.
262
263 23
264This file is part of GNU Emacs. 24This file is part of GNU Emacs.
265 25