annotate nextstep/DEV-NOTES @ 99501:e3acb52d33e1

2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-yank): Make any prefix force normal yanking. Suppress folding if text would be swallowed into a folded subtree. (org-yank-folded-subtrees, org-yank): Docstring updates. * org-agenda.el (org-agenda-compare-effort): Treat no effort defined as 0. * org-exp.el (org-export-language-setup): Add Catalan and Esperanto language entries. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-refile): Allow refiling of entire regions. * org-clock.el (org-clock-time%): New function. * org.el (org-entry-get, org-entry-delete): Use safer regexps to retrieve property values. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-list): Handle the value `only' of org-agenda-show-log'. (org-agenda-log-mode): Interpret a double prefix arg. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-html-footnotes-section): New variable. (org-export-as-html): Use `org-export-html-footnotes-section' to insert the footnotes. (org-export-language-setup): Add "Footnotes" to language words. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-yank): Fix bug when not inserting a subtree. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-vm.el (org-vm-follow-link): Call `vm-preview-current-message' instead of `vm-beginning-of-message'. * org.el (org-make-link-regexps): Make sure that links to gnus can contain brackets. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-attach.el (org-attach-dir): Remove duplicate ID creation code. * org-id.el (org-id-new): Use `org-trim' to extract the uuid from shell output. * org.el (org-link-abbrev-alist): Improve customization type. * org-attach.el (org-attach-expand-link, org-attach-expand): New functions. * org-agenda.el (org-agenda-get-progress): Renamed from `org-get-closed'. Implement searching for state changes as well. (org-agenda-log-mode-items): New option. (org-agenda-log-mode): New option prefix argument, interpreted as request to show all possible progress info. (org-agenda-get-day-entries): Call `org-get-progress' instead of `org-get-closed'. (org-agenda-set-mode-name): Handle the more complex log mode settings. (org-get-closed): New alias, pointing to `org-get-progress'. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-file-apps-defaults-gnu) (org-file-apps-defaults-macosx) (org-file-apps-defaults-windowsnt): Add an entry defining the system command. (org-file-apps): Allow `system' as key and value. (org-open-at-point): Explain the effect of a double prefix arg. (org-open-file): If the argument `in-emacs' is (16), i.e. corresponding to a double prefix argument, try to open the file externally. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-link): Abbreviate absolute files names in links. Also, fix a bug in which the double C-u prefix would not be honored. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-heading): If buffer does not end with a newline, add one if necessary to insert headline correctly. * org-exp.el (org-export-as-html): Make sure that <hr/> is between paragraphs, not inside. * org.el (org-todo): Quote `org-agenda-headline-snapshot-before-repeat'. * org-exp.el (org-export-as-html): Fully process link descriptions. (org-export-html-format-desc): New function. (org-export-as-html): Collect footnotes into the correct basket. (org-html-protect): No longer protect quotations marks here, this goes wrong. * org-agenda.el (org-agenda-remove-marked-text): Bind variable BEG. * org-compat.el (org-fit-window-to-buffer): New function (not really, a preliminary and incomplete version was present earlier, but not used). * org.el (org-fast-todo-selection, org-fast-tag-selection): Use `org-fit-window-to-buffer'. * org-exp.el (org-export): Use `org-fit-window-to-buffer'. * org-agenda.el (org-agenda-get-restriction-and-command) (org-fit-agenda-window, org-agenda-convert-date): Use `org-fit-window-to-buffer'. * org-exp.el (org-export-as-html): Process href links through `org-export-html-format-href'. (org-export-html-format-href): New function. * org-agenda.el (org-agenda-todo): Update only the current headline if this is a repeated TODO, marked done for today. (org-agenda-change-all-lines): New argument JUST-THIS, to change only the current line. * org.el (org-todo): Take a snapshot of the headline if the repeater might change it. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-publish.el (org-publish-find-title): Remove buffers visited only for extracting the title. * org-exp.el (org-export-html-style) (org-export-html-style-default): Mark style definitions as unparsed CDATA. * org-publish.el (org-publish-validate-link): Function re-introduced. 2008-11-12 Charles Sebold <csebold@gmail.com> * org-plot.el (org-plot/add-options-to-plist): Supports timefmt property. (org-plot-quote-timestamp-field): New function. (org-plot-quote-tsv-field): Call timestamp field function when necessary rather than just quoting as a string. (org-plot/gnuplot-to-data): Pass in timefmt property. (org-plot/gnuplot-script): Supports timefmt property. (org-plot/gnuplot): Checks for timestamp column before checking for text index column. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-heading): Improve behavior with hidden subtrees. * org-publish.el (org-publish-org-index): Create a section in the index file. (org-publish-org-index): Stop linking to directories. * org.el (org-emphasis-alist): Use span instead of <u> to underline text. * org-exp.el (org-export-as-html): Make sure <p> is closed before <pre> sections. 2008-11-12 Sebastian Rose <sebastian_rose@gmx.de> * org-jsinfo.el (org-infojs-template): Remove language attribute from script tag. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-agenda.el (org-agenda-remove-marked-text): New function. (org-agenda-mark-filtered-text) (org-agenda-unmark-filtered-text): New functions. (org-write-agenda): Remove fltered text. * org.el (org-make-tags-matcher): Give access to TODO "property" without speed penalty. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-link-frame-setup): Add `org-gnus-no-new-news' as an option. (org-store-link-props): Make sure adding to the plist works correctly. * org-gnus.el (org-gnus-no-new-news): New function. (org-gnus-follow-link): Allow the article ID to be a message-id, in addition to allowing article numbers. Message IDs make much more roubust links. (org-gnus-store-link): Use message-id to create link. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-emphasize): Reverse the selection array. (org-emphasis-alist): Set <code> tags for the verbatim environment. * org-remember.el (org-remember-handler): Fix bug with prefix-related changing of the note storage target. * org-exp.el (org-print-icalendar-entries): Make the exported priorities compatible with RFC 2445. * org-clock.el (org-clock-save): Insert time stamp without dependence on time-stamp.el. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el ("saveplace"): If saveplace puts point into an invisible location, make it visible. (org-make-tags-matcher): Allow inactive time stamps in time comparisons. (org-yank-adjusted-subtrees): New option. (org-yank): Incorporate adjusting trees. (org-paste-subtree): New argument FOR-YANK which will cause insertion at point without backing up over white lines, and leave point at the end of the inserted text. Also if the cursor is at the beginning of a headline, use the same level or the inserted tree. * org-publish.el (org-publish-get-base-files-1): Deal correctly with broken symlinks 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-exp.el (org-export-select-tags, org-get-current-options): Fix typo.
author Carsten Dominik <dominik@science.uva.nl>
date Wed, 12 Nov 2008 08:01:06 +0000
parents bfcc88f3efea
children 3d0115eb5d66
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
97045
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1 This file summarizes primary aspects of the NS port architecture. If
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
2 possible, it should be updated for changes.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
3
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
4 Currently it summarizes the state as of:
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
5
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
6 summer 2008 shortly after merging to trunk
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
7
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
8
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
9
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
10 Startup
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
11 -------
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
12
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
13 Init sequence:
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
14 emacs.c: ns_alloc_autorelease_pool() nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
15 emacs.c: ns_init_paths() nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
16 - override EMACSLOADPATH, etc. so resources can be found in-bundle
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
17 emacs.c: init_display() dispnew.c
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
18 - sets Vwindow_system (window-system) to 'ns
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
19 emacs.c: loadup.el -> startup.el -> ns-initialize-window-system
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
20 -> x-open-connection (nsfns.m)
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
21 - ns-list-services
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
22 -> nsterm.m: ns_term_init()
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
23 - EmacsApp sharedApplication
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
24 - read NS defaults (org.gnu.Emacs.plist)
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
25 - init X-style color list
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
26 - ns_create_terminal()
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
27 - NSApp run (goes to applicationDidFinishLaunching which terminates
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
28 event loop -- see below)
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
29
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
30
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
31
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
32 Event Loop
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
33 ----------
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
34
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
35 In an NS application, the event loop is normally managed by system and all
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
36 user code is event-driven. [NSApp run] is called by user and never returns.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
37
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
38 In Emacs, the event loop is managed by emacs itself.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
39
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
40 The NS port mediates between these two styles by intercepting the NS event
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
41 dispatch at [NSApp sendEvent]. If a special event is detected, the event loop
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
42 is broken, and control returned to Emacs. This special event is sent by
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
43 ns_send_appdefined, which is called under these circumstances:
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
44
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
45 - if a user input event is received
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
46 - when a timeout fires
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
47
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
48 NS event processing is instigated from Emacs through ns_select() and
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
49 ns_read_socket() in nsterm.m. Parts of the codepaths leading to these
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
50 functions are:
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
51
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
52
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
53 keyboard.c:read_avail_input()
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
54 -> ns_read_socket (ns_send_appdefined) -> [NSApp run]
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
55
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
56 process.c:wait_reading_process_output()
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
57 -> ns_select -> gobble_input (global inNsSelect=1)
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
58 -> ns_read_socket (ns_send_appdefined if !expected) -> [NSApp run]
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
59
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
60 sysdep.c:sys_select() -> read_input_waiting()
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
61 -> ns_read_socket (send_appdefined) -> [NSApp run]
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
62 [this codepath may not be used]
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
63
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
64
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
65 Currently ctrl-g is not detected in as many circumstances as other emacsen.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
66 It is not certain whether this is due to the means of event loop integration,
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
67 or errors of omission in the NS code. One area for exploration is the
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
68 NO_SOCK_SIGIO define. When it is defined, ctrl-g seems to be picked up more
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
69 often, but there are some annoying side effects. Currently it is left off by
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
70 default, unless the --enable-cocoa-experimental-ctrl-g option is passed to
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
71 configure. (Has no effect under GNUstep.) This is an area for improvement.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
72 Also, see the article here and its containing thread:
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
73
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
74 http://article.gmane.org/gmane.emacs.devel/92021/match=handling%5fsignal
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
75
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
76
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
77
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
78
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
79 Text Rendering and Font Handling
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
80 --------------------------------
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
81
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
82 nsfont.m implements the font driver, responsible for managing fonts and
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
83 rendering text. Fonts are obtained through NSFontManager. Rendering must be
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
84 done at a low level due to emacs' fine control over this process, therefore
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
85 there are different approachs under Cocoa and GNUstep. Under GNUstep, the
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
86 original NeXT Display PostScript (DPS) APIs are available and used. Under
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
87 Cocoa, these were removed and Quartz drawing functions replaced them.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
88
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
89 In both cases, font glyphs are accessed through UTF8 character
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
90 representations. It would be preferable to use unicode indices, but prior
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
91 attempts at this have failed.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
92
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
93 Multi-script fontsets are auto-created in nsfont_make_fontset_for_font() using
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
94 the facilities of NSTextStorage and NSLayoutManager.
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
95
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
96
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
97 Object Architecture
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
98 -------------------
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
99
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
100 Unlike the other GUIs, the NS interface is based on a high-level and
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
101 object-oriented API. This creates some tension in the code because emacs
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
102 itself has been architected around the low-level Xlib and Xt APIs. The NS
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
103 port tries to strike a balance between simplifying code on its side using OO
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
104 features, and keeping code as similar as possible to other ports to ease
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
105 maintenance. The following are the main classes (see nsterm.h):
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
106
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
107 EmacsApp : NSApplication
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
108 - event loop integration, interapp comms point for Finder (NSWorkspace) msgs,
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
109 Services
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
110 - one global instance (NSApp)
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
111 - nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
112
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
113 EmacsView : NSView <TextInput>
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
114 - handles rendering of text and fringe, interapp comms for drag/drop
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
115 - instance for each frame
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
116 - child of window's content view
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
117 - nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
118
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
119 EmacsWindow : NSWindow
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
120 - utility override for resize handling
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
121
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
122 EmacsScroller : NSScroller
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
123 - instance for each emacs window, renders scrollbar
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
124 - child of window's content view
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
125 - nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
126
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
127 EmacsImage : NSImage
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
128 - image rendering, toolbar icons, stippling, fringe bitmaps
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
129 - instance for each image
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
130 - nsimage.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
131
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
132 EmacsMenu : NSMenu
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
133 - menu management
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
134 - one tree of instances for menubar, one instance for each popup menu
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
135 - nsmenu.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
136
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
137 EmacsToolbar : NSToolbar
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
138 - toolbar management, one instance for each frame
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
139 - nsmenu.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
140
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
141
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
142 EmacsDialogPanel : NSPanel
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
143 - popup dialogs, one instance for each
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
144 - nsmenu.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
145
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
146 EmacsTooltip : NSObject
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
147 - tooltip popups, one instance for each
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
148 - nsmenu.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
149
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
150 EmacsGlyphStorage : NSObject <NSGlyphStorage>
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
151 - utility for text rendering
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
152 - nsfont.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
153
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
154 EmacsPrefsController : NSObject
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
155 - utility for preferences panel management, one global instance
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
156 - nsterm.m
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
157 - nextstep/Cocoa/Emacs.base/Contents/Resources/preferences.nib
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
158 - nextstep/GNUstep/Emacs.base/Resources/preferences.gorm
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
159
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
160 EmacsSavePanel : NSSavePanel
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
161 EmacsOpenPanel : NSOpenPanel
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
162 - utility override for panel notifications
bfcc88f3efea add developer notes file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
163