aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2016-02-27 11:05:10 -0800
committerGlenn Morris2016-02-27 11:05:10 -0800
commit4e461281317f4d542af18a701cf2e4c5a3205dd3 (patch)
tree8030d3a1c55d825dd5d56c3ee626d2c11eca80f5
parent9e078e592f02108c3b27c66513da4696b09e8125 (diff)
downloademacs-4e461281317f4d542af18a701cf2e4c5a3205dd3.tar.gz
emacs-4e461281317f4d542af18a701cf2e4c5a3205dd3.zip
* nextstep/WISHLIST: Merge into etc/TODO and remove.
* etc/TODO: Merge in items from nextstep/WISHLIST. * nextstep/README: Update for this change.
-rw-r--r--etc/TODO243
-rw-r--r--nextstep/README4
-rw-r--r--nextstep/WISHLIST247
3 files changed, 239 insertions, 255 deletions
diff --git a/etc/TODO b/etc/TODO
index 590d233fef7..39ebef3fe02 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -675,15 +675,242 @@ from the emacsclient process.
675 675
676** NeXTstep port 676** NeXTstep port
677 677
678*** Missing features
679
680This sections contains features found in other official Emacs ports.
681
682**** Support for "xwidget"
683
684Emacs 25 has support for "xwidgets", a system to include operating
685system components into an Emacs buffer. The components range from
686simple buttons to "webkit" (effectively, a web browser).
687
688Currently, "xwidget" only works for the "gtk+" framework but it is
689designed to be compatible with multiple Emacs ports.
690
691**** Respect `frame-inhibit-implied-resize'
692
693When the variable `frame-inhibit-implied-resize' is non-nil, frames
694should not be resized when operations like changing font or toggling
695the tool bar is performed.
696
697Unfortunately, the tool bar (and possible other operations) always
698resize the frame.
699
700**** Support `proced' (implement `process-attributes')
701
702Unfortunately, a user-level process like Emacs does not have the
703privileges to get information about other processes under OS X.
704
705There are other ways to do this:
706
707 1) Spawn "ps" and parse the output ("ps" has superuser privileges).
708
709 2) Sign Emacs as part of the distribution process.
710
711 3) Ask the user to self-sign Emacs, if this feature is of interest.
712
713Anders Lindgren <andlind@gmail.com> has implemented
714`process-attributes' for OS X, which currently only work when
715running Emacs as root.
716
717See this article by Bozhidar Batsov for an overview of Proced:
718http://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/
719
720**** Tooltip properties
721
722Tooltip properties like the background color and font are hard-wired,
723even though Emacs allows a user to customize such features.
724
725*** New features
726
727This section contains features unique to Nextstep and/or OS X.
728
729**** PressAndHold for writing accented character
730
731On OS X, many application support the press and hold pattern to
732invoke a menu of accented characters. (See example at
733https://support.apple.com/en-us/HT201586 .)
734
735Currently, this doesn't work in Emacs.
736
737Note that "ns-win.el" explicitly disables this.
738
739Note: This feature might not be allowed to be implemented until also
740implemented in Emacs for a free system.
741
742**** Floating scroll bars
743
744In modern OS X applications, the scroll bar often floats over the
745content, and is invisible unless actually used. This makes the user
746interface less cluttered and more area could be used to contain text.
747
748With floating scroll bars, the user interface would look like it does
749when they are disabled today. However, they will be made visible when
750a scroll action is initiated, e.g. by putting two fingers on a
751trackpad.
752
753Note: This feature might not be allowed to be implemented until also
754implemented in Emacs for a free system.
755
756*** Features from the "mac" port
757
758This section contains features available in the "mac" Emacs port.
759
760As the "mac" port (as of this writing) isn't an official Emacs port,
761it might contain features not following the FSF rule "must exist on
762free systems".
763
764The "mac" port is based on the Emacs 22 C-based Carbon interface.
765It has been maintained in parallel to the official Cocoa-based NS
766interface. The Carbon interface has been enhanced, and a number of the
767features of that interface could be implemented NS.
768
769**** Smooth scrolling -- maybe not a good idea
770
771Today, by default, scrolling with a trackpad makes the text move in
772steps of five lines. (Scrolling with SHIFT scrolls one line at a time.)
773
774The "mac" port provides smooth, pixel-based, scrolling. This is a very
775popular features. However, there are drawbacks to this method: what
776happens if only a fraction of a line is visible at the top of a
777window, is the partially visible text considered part of the window or
778not? (Technically, what should `window-start' return.)
779
780An alternative would be to make one-line scrolling the default on NS
781(or in Emacs in general).
782
783Note: This feature might not be allowed to be implemented until also
784implemented in Emacs for a free system.
785
786**** Mouse gestures
787
788The "mac" port defines the gestures `swipe-left/right/up/down',
789`magnify-up/down', and `rotate-left/right'.
790
791It also binds the magnification commands to change the font
792size. (This should be not be done in a specific interface, instead
793Emacs should do this binding globally.)
794
795Note: This feature might not be allowed to be implemented until also
796implemented in Emacs for a free system.
797
798**** Synthesize bold fonts
799
800*** Open issues
801
802This section contains issues where there is an ongoing debate.
803
804**** Key bindings of CMD and ALT
805
806Currently in the "ns" port, ALT is bound to Meta and CMD is bound to
807Super -- allowing the user to use typical OS X commands like CMD-A to
808mark everything.
809
810Unfortunately, when using an international keyboard, you can't type
811normal characters like "(" etc.
812
813There are many alternative key bindings. One solution is to bind CMD
814to Meta and pass ALT to the system. In fact, this is what Emacs did up
815to, and including, version 22. Also, this is how the "mac" port binds
816the keys.
817
818One could envision asymmetrical variants as well, however, this is
819inappropriate for the default setting.
820
821See the discussion on emacs-devel:
822https://lists.gnu.org/archive/html/emacs-devel/2015-12/msg01575.html
823https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00008.html
824
825*** Internal development features
826
827**** Regression test system (or at least a checklist)
828
829Today, after each change to the user interface, Emacs must be manually
830tested. Often, small details are overlooked ("Oh, I didn't test
831toggling the tool-bar in one of the full screen modes, when multiple
832frame were open -- silly me.")
833
834It would be an enormous help if this could be tested automatically.
835Many features are generic, however, the NS interface provides a number
836of unique features.
837
838**** Existing packages
839
840Note that there is a generic UI test named frame-test.el, see
841http://debbugs.gnu.org/21415#284 .
842The NS interface passes this, with the exception of two toolbar-related errors.
843
844**** Anders frame test
845
846Anders Lindgren <andlind@gmail.com> has implemented some (very basic)
847tests for full screen, toolbar, and auto-hiding the menu bar.
848
849**** Make sure all build variants work
850
851Emacs can be build in a number of different ways. For each feature,
852consider if is really is "NS" specific, or if it should be applied to
853all build versions.
854
855- With the "NS" interface. This is the normal way to build Emacs on OS X.
856
857- With the "X11" interface. On OS X, this is mainly of interest to
858 developers of Emacs to get a "reference" interface implementations.
859 However, it might be of interest for people working remotely, as X11
860 applications can be used over a network connection.
861
862- Console only.
863
678*** Bugs 864*** Bugs
679 865
866**** Incorrect translation of Super modifier with Ctrl or Meta on OS X
867
868When pressing `M-s-a', Emacs replies "M-s-å is undefined". What
869happened is a mix of Emacs view that Meta and Super has been pressed,
870and OS X view that ALT-a should yield "å".
871
872The bug reports suggests two different patched, unfortunately, none
873work properly. For example:
874
875 Use a Swedish keyboard layout
876
877 (setq ns-alternate-modifier nil)
878
879 "CMD-ALT-9"
880
881Today, this correctly yields that s-] is undefined. With the either
882of the two patches, Emacs responds that s-9 was pressed.
883
884More investigation is needed to fix this problem.
885
886Links:
887- http://debbugs.gnu.org/19977
888- http://debbugs.gnu.org/21330
889- http://debbugs.gnu.org/21551
890
891**** Toggling the toolbar in fullheight or maximized modes
892
893The toolbar, in the NS interface, is not considered part of the text
894area. When it is toggled, the Emacs frame change height accordingly.
895
896Unfortunately, this also occurs when the frame is in fullheight or
897maximized modes (N.B. this is not the same as "fullscreen"). The
898effect is that the full frame size either increases (stretching down
899below the lower edge of the screen) or decreases (leaving space
900between the lower edge of the frame and the lower edge of the screen).
901
902A better solution would be for the frame to retain its size,
903i.e. change the text area.
904
905This is related to the `frame-inhibit-implied-resize' issue.
906
680**** The event loop does not redraw. 907**** The event loop does not redraw.
681 A problem is that redraw don't happen during resize, 908A problem is that redraw don't happen during resize,
682 because we can't break out from the NSapp loop during resize. 909because we can't break out from the NSapp loop during resize.
683 There was a special trick to detect mouse press in the lower right 910There was a special trick to detect mouse press in the lower right
684 corner and track mouse movements, but this did not work well, and was 911corner and track mouse movements, but this did not work well, and was
685 not scalable to the new Lion "resize on every window edge" behavior. 912not scalable to the new Lion "resize on every window edge" behavior.
686 [As of trunk r109635, 2012-08-15, the event loop no longer polls.] 913[As of trunk r109635, 2012-08-15, the event loop no longer polls.]
687 914
688**** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back 915**** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back
689up on top of all others (probably fixed in bug#17439) 916up on top of all others (probably fixed in bug#17439)
@@ -1329,3 +1556,7 @@ GNU General Public License for more details.
1329 1556
1330You should have received a copy of the GNU General Public License 1557You should have received a copy of the GNU General Public License
1331along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 1558along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1559
1560;; Local Variables:
1561;; coding: utf-8
1562;; End:
diff --git a/nextstep/README b/nextstep/README
index 7724afa43bf..026a048e9d4 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -101,5 +101,5 @@ interface.
101 101
102The INSTALL file in this directory for compilation instructions. 102The INSTALL file in this directory for compilation instructions.
103 103
104The WISHLIST file in this directory for a list of ideas for future 104The Nextstep section in the etc/TODO file for a list of ideas for
105development of the NS interface. 105future development.
diff --git a/nextstep/WISHLIST b/nextstep/WISHLIST
deleted file mode 100644
index 1c4b9e2deb4..00000000000
--- a/nextstep/WISHLIST
+++ /dev/null
@@ -1,247 +0,0 @@
1 -*- org -*-
2
3 Wish list for the "NS" OS X Emacs port
4 --------------------------------------
5
6 Note: This document is written using "org-mode", a plain-text
7 format supporting outlines. To expand a heading, press TAB. To
8 expand all headings and subheadings, press S-TAB until Emacs
9 responds "SHOW ALL".
10
11* Introduction
12
13This is a wishlist for future development of the "NS" Emacs user
14interface whose primary use is the official Emacs version on OS X.
15
16This list should be seen as a complement to the bug- and wishlist on
17[[http://debbugs.gnu.org/cgi/pkgreport.cgi?package%3Demacs][debbugs]], the Emacs bug tracker.
18
19* Missing features
20
21This sections contains features found in other official Emacs ports.
22
23** Support for "xwidget"
24
25Emacs 25 has support for "xwidgets", a system to include operating
26system components into an Emacs buffer. The components range from
27simple buttons to "webkit" (effectively, a web browser).
28
29Currently, "xwidget" only works for the "gtk+" framework but it is
30designed to be compatible with multiple Emacs ports.
31
32** Respect `frame-inhibit-implied-resize'
33
34When the variable `frame-inhibit-implied-resize' is non-nil, frames
35should not be resized when operations like changing font or toggling
36the tool bar is performed.
37
38Unfortunately, the tool bar (and possible other operations) always
39resize the frame.
40
41** Support `proced' (implement `process-attributes')
42
43Unfortunately, a user-level process like Emacs does not have the
44privileges to get information about other processes under OS X.
45
46There are other ways to do this:
47
48 1) Spawn "ps" and parse the output ("ps" has superuser privileges).
49
50 2) Sign Emacs as part of the distribution process.
51
52 3) Ask the user to self-sign Emacs, if this feature is of interest.
53
54Anders Lindgren <andlind@gmail.com> has implemented
55`process-attributes' for OS X -- which currently only work when
56running Emacs as root.
57
58[[http://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/][See this article by Bozhidar Batsov for an overview of Proced.]]
59
60** Tooltip properties
61
62Tooltip properties like the background color and font are hard wired,
63even though Emacs allow a user to customize such features.
64
65* New features
66
67This section contains features unique to the NS and/or OS X.
68
69** PressAndHold for writing accented character
70
71On OS X, many application supports the press and hold pattern to
72invoke a menu of accented characters. (See example at [[https://support.apple.com/en-us/HT201586][Apple]].)
73
74Currently, this doesn't work in Emacs.
75
76Note that "ns-win.el" explicitly disables this.
77
78Note: This feature might not be allowed to be implemented until also
79implemented in Emacs for a free system.
80
81** Floating scroll bars
82
83In modern OS X applications, the scroll bar often float over the
84content, and is invisible unless actually used. This makes user
85interface less cluttered and more area could be used to contain text.
86
87With floating scroll bars, the user interface would look like it does
88when they are disabled today. However, they will be made visible when
89a scroll action is initiated, e.g. by putting two fingers on a
90trackpad.
91
92Note: This feature might not be allowed to be implemented until also
93implemented in Emacs for a free system.
94
95* Features from the "mac" port
96
97This section contains features available in the "mac" Emacs port.
98
99As the "mac" port (as of this writing) isn't an official Emacs port,
100it might contain features not following the FSF rule "must exist on
101free systems".
102
103The "mac" port is based on the Emacs 22 C-based Carbon interface. It
104has been maintained in parallel to the official Cocoa-based NS
105interface. The Carbon interface has been enhanced, and a number of the
106features of that interface could be implemented NS.
107
108** Smooth scrolling -- maybe not a good idea
109
110Today, by default, scrolling with a trackpad makes the text move in
111steps of five lines. (Scrolling with SHIFT scrolls one line at a
112time.)
113
114The "mac" port provides smooth, pixel-based, scrolling. This is a very
115popular features. However, there are drawbacks to this method: what
116happens if only a fraction of a line is visible at the top of a
117window, is the partially visible text considered part of the window or
118not? (Technically, what should `window-start' return.)
119
120An alternative would be to make one-line scrolling the default on NS
121(or in Emacs in general).
122
123Note: This feature might not be allowed to be implemented until also
124implemented in Emacs for a free system.
125
126** Mouse gestures
127
128The "mac" port defines the gestures `swipe-left/right/up/down',
129`magnify-up/down', and `rotate-left/right'.
130
131It also binds the magnification commands to change the font
132size. (This should be not be done in a specific interface, instead
133Emacs should do this binding globally.)
134
135Note: This feature might not be allowed to be implemented until also
136implemented in Emacs for a free system.
137
138** Synthesize bold fonts
139
140* Open issues
141
142This section contains issues where there is an ongoing debate.
143
144** Key bindings of CMD and ALT
145
146Currently in the "ns" port, ALT is bound to Meta and CMD is bound to
147Super -- allowing the user to use typical OS X commands like CMD-A to
148mark everything.
149
150Unfortunately, when using an international keyboard, you can't type
151normal characters like "(" etc.
152
153There are many alternative key bindings. One solution is to bind CMD
154to Meta and pass ALT to the system. In fact, this is what Emacs did up
155to, and including, version 22. Also, this is how the "mac" port binds
156the keys.
157
158One could envision asymmetrical variants as well, however, this is
159inappropriate for the default setting.
160
161See the discussion on emacs-devel [[https://lists.gnu.org/archive/html/emacs-devel/2015-12/msg01575.html][part 1]] and [[https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00008.html][part 2]].
162
163* Bugs
164
165This sections contains a small selection of bugs which are hard to
166fix. For other bugs, see the official bug tracker debbugs.gnu.org.
167
168** Incorrect translation of Super modifier with Ctrl or Meta on OS X
169
170When pressing `M-s-a', Emacs replies "M-s-å is undefined". What
171happened is a mix of Emacs view that Meta and Super has been pressed,
172and OS X view that ALT-a should yield "å".
173
174The bug reports suggests two different patched, unfortunately, none
175work properly. For example:
176
177 Use a Swedish keyboard layout
178
179 (setq ns-alternate-modifier nil)
180
181 "CMD-ALT-9"
182
183Today, this correctly yields that s-] is undefined. With the either
184of the two patches, Emacs responds that s-9 was pressed.
185
186More investigation is needed to fix this problem.
187
188Links:
189- [[http://debbugs.gnu.org/cgi/bugreport.cgi?bug%3D19977][bug#19977]]
190- [[http://debbugs.gnu.org/cgi/bugreport.cgi?bug%3D21330][bug#21330]]
191- [[http://debbugs.gnu.org/cgi/bugreport.cgi?bug%3D21551][bug#21551]]
192
193** Toggline the toolbar in fullheight or maximized modes
194
195The toolbar, in the NS interface, is not considered part of the text
196area. When it is toggled, the Emacs frame change height accordingly.
197
198Unfortunately, this also occurs when the frame is in fullheight or
199maximized modes (N.B. this is not the same as "fullscreen"). The
200effect is that the full frame size either increases (stretching down
201below the lower edge of the screen) or decreases (leaving space
202between the lower edge of the frame and the lower edge of the screen).
203
204A better solution would be for the frame to retain its size,
205i.e. change the text area.
206
207This is related to the `frame-inhibit-implied-resize' issue.
208
209* Internal development features
210
211** Regression test system (or at least a checklist)
212
213Today, after each change to the user interface, Emacs must be manually
214tested. Often, small details are overlooked ("Oh, I didn't test
215toggling the tool-bar in one of the full screen modes, when multiple
216frame were open -- silly me.")
217
218It would be an enormous help if this could be tested automatically.
219Many features are generic, however, the NS interface provides a number
220of unique features.
221
222*** Existing packages
223
224Note that there is a generic UI test named "[[http://debbugs.gnu.org/cgi/bugreport.cgi?bug%3D21415#284][frame-test.el]]". The NS
225interface pass this, with the exception of two toolbar related
226errors.
227
228*** Anders frame test
229
230Anders Lindgren <andlind@gmail.com> has implemented some (very basic)
231tests for full screen, toolbar, and auto-hiding the menu bar.
232
233** Make sure all build variants work
234
235Emacs can be build in a number of different ways. For each feature,
236consider if is really is "NS" specific, or if it should be applied to
237all build versions.
238
239- With the "NS" interface. This is the normal way to build Emacs on
240 OS X.
241
242- With the "X11" interface. On OS X, this is mainly of interest to
243 developers of Emacs to get a "reference" interface implementations.
244 However, it might be of interest for people working remotely, as X11
245 applications can be used over a network connection.
246
247- Console only.