unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Emacs.app (Cocoa/GNUstep port) release and feature list
@ 2007-11-23 10:41 Adrian Robert
  2007-11-23 14:56 ` David Reitter
                   ` (3 more replies)
  0 siblings, 4 replies; 25+ messages in thread
From: Adrian Robert @ 2007-11-23 10:41 UTC (permalink / raw)
  To: emacs-devel

Hi,

Release 9.0-rc3 for the GNUstep and OS X / Cocoa port of the GNU Emacs
unicode-2 is available at http://emacs-app/sf.net

This release brings with it the multi-TTY merge (mixed GUI/TTY
sessions not yet supported though), and a number of bug fixes and
minor enhancements.  GNUstep support is untested for this release;
please contact me off-list if you have a GNUstep installation and are
willing to try it out.

In view of the prospects for upcoming merge into CVS, it was suggested
that a list of user-visible differences in this port from other
platforms be posted.  See below.  A couple of general points should be
noted:

- The general aim is to take advantage of platform-specific features
without compromising or altering anything in standard emacs
functionality.  It should support all non-platform-specific emacs lisp
packages -- if not it's a bug.

- Most of the features below are now supported as well by the Carbon
port, modulo differences in what is enabled or set by default.

- "Patch" files available on sourceforge allow easy inspection of just
the code that this port adds.


- Text rendering: Font anti-aliasing.

  This is standard on the OS X and GNUstep platforms.  Can be turned
off if desired.


- Text rendering: adjustable line height.

  Allows vertical compression or expansion of the display.  By default
it is inactive.


- Display: alpha and background image support.

  Frame backgrounds can be set to transparent colors and/or images.
Inactive by default.


- Keyboard handling: Support platform "Command" key as "Super".

  The Command key is an extra key on this platform relative to typical
X hardware.  Mapping it to Super and setting up appropriate
keybindings allows Emacs to support full CUA keybindings on these
systems without interfering with standard emacs Control and Meta
bindings.


- Keyboard handling: Support platform input methods and keyboard mappings.

  Equivalent to XIM support on X systems.


- Fontsets: Capability to autogenerate fontsets for a given base font.

  This takes advantage of platform-provided facilities.  It does not
have to be used; standard manually-defined fontsets are fully
supported, albeit via an X11-specific syntax.


- Menus: Prefer Super bindings in display of shortcuts.

  This causes display of CUA bindings, similar to other platform apps.


- Menus: Add "Emacs" and "Windows" menus.

  These are standard menus for all platform applications.  A couple of
entries on these are moved from other menus.


- Navigation: ns-mark-nav package for navigating the mark rings.

  User can move backwards or forwards through buffer or global mark
history with meta-p / meta-n.


- Customization: Use of 'defaults' persistent user preferences database.

  Takes the place of X resources on NS systems, called through the
same pathways (x_get_string_resource(), etc.), and used for similar
settings (mostly GUI-related).  As with X resources, these may be
overridden by .emacs and other lisp-based methods.


- Customization: Font panel for default font and size selection.

  This feature allows user to select font via a system-provided
chooser.  It exists also in the Carbon and W32 ports, and maybe (?)
the GTK/Xft port.  Does not interfere with ordinary face-customization
setting of fonts, just provides an alternate route.


- Customization: Color panel for face color customization.

  This feature has no equivalent on other systems, but need not be
used and does not interfere with standard means of color
customization.  User may drag from a color-selection panel to
characters in an emacs frame to change color of face at that point.


- Customization: Preferences panel for major GUI settings.

  This feature has no equivalent on other systems, but need not be
used and does not interfere with standard means of customization.
Backed by lisp-accessible variables and persisted via the X resources
equivalent.


- Integration: Services integration.

  "Services" on NS platforms provide for inter-application
communication.  The Emacs.app implementation currently exposes
services from other apps to Emacs, via both menus and lisp functions.


- Integration: Respond to Workspace requests.

  Files can be associated to Emacs.app and opened within it by
double-clicking (new instance started only if one not running),
similar to emacsclient but tied to the OS file browser.  Note this
does not replace emacsclient, which remains bundled with Emacs.app and
functions correctly on these systems.


- Integration: drag/drop of files and text.

  Text or file dragged to an emacs window is inserted; file dragged to
application icon opened in new buffer.


- Integration: ns-grab-env function and macFixEnv binary tool.

  These deal with a platform-specific issue in which the PATH value
given to the application started from the Workspace (rather than
command line) may not be what is expected.


- File system: Open and Save file GUI panels are available.

  These are bound to menu operations and 'super' keybindings.  They do
not take the place of standard minibuffer- and dired-based Emacs
file-finding mechanisms, and no existing keybindings are overridden.



cheers,
Adrian

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 10:41 Emacs.app (Cocoa/GNUstep port) release and feature list Adrian Robert
@ 2007-11-23 14:56 ` David Reitter
  2007-11-23 15:25   ` YAMAMOTO Mitsuharu
  2007-11-23 15:38   ` Adrian Robert
  2007-11-23 15:29 ` Stefan Monnier
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 25+ messages in thread
From: David Reitter @ 2007-11-23 14:56 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

Adrian,

thanks for working on the port - one can tell that there has been a  
lot of progress.

A couple of comments.

In general: do you support the established Mac specific customization  
variables? In particular:

> - Keyboard handling: Support platform "Command" key as "Super".

Is this a default, and can it be changed using `mac-command-modifier'?
While your default is good (similar to what we have in Aquamacs, after  
all), I know that a lot of users like to configure Command to be Meta,  
especially when using keyboard layouts that require the use of the  
Option key to type things like curly brackets, the backlash or @ sign.

> - Customization: Preferences panel for major GUI settings.
>
>  This feature has no equivalent on other systems, but need not be
> used and does not interfere with standard means of customization.
> Backed by lisp-accessible variables and persisted via the X resources
> equivalent.

There is no way to customize these dialogs via Lisp, i.e. add new  
options?
While I find the UI approach very good, I think that a lack of  
interaction with the Lisp side of things would be rather un-Emacs-like.

Secondly, why introduce yet another system to store (rather than just  
load) Emacs-specific configuration variables?
There  is `custom-file', and users can edit their .emacs.

What do you do when settings conflict?

A couple of other questions w.r.t. known problems with the Carbon port:

- does your port run from anywhere in the system like any good  
application? The current Carbon port (including 22.1) crashes when  
started from directories with non-7-bit ASCII path names, such as / 
Applications/Développement/

- does your port play nice with multi-screen setups, especially when  
screens are of different size? The Carbon port doesn't.

- does your port take care to not open frames underneath the Dock (or  
otherwise) or enlarge them too much when changing font sizes?  
(Aquamacs / Carbon has trouble with this at the moment)

Best
- David

PS.: I can't run rc3 on my 10.5.1. machine. It quits immediately. If  
you need more info, let me know.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 14:56 ` David Reitter
@ 2007-11-23 15:25   ` YAMAMOTO Mitsuharu
  2007-11-23 15:38   ` Adrian Robert
  1 sibling, 0 replies; 25+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-11-23 15:25 UTC (permalink / raw)
  To: emacs-devel, david.reitter; +Cc: adrian.b.robert

>>>>> On Fri, 23 Nov 2007 14:56:32 +0000, David Reitter <david.reitter@gmail.com> said:

> A couple of other questions w.r.t. known problems with the Carbon
> port:

> - does your port run from anywhere in the system like any good
> application? The current Carbon port (including 22.1) crashes when
> started from directories with non-7-bit ASCII path names, such as /
> Applications/Développement/

> - does your port play nice with multi-screen setups, especially when
> screens are of different size? The Carbon port doesn't.

As I said before, they are platform-independent problems.  I don't
think it's a good idea to work around them in a platform-specific way.

> - does your port take care to not open frames underneath the Dock
> (or otherwise) or enlarge them too much when changing font sizes?
> (Aquamacs / Carbon has trouble with this at the moment)

Cocoa seems to handle such situations automatically by default.
Actually, the Carbon+AppKit port handles them.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 10:41 Emacs.app (Cocoa/GNUstep port) release and feature list Adrian Robert
  2007-11-23 14:56 ` David Reitter
@ 2007-11-23 15:29 ` Stefan Monnier
  2007-11-23 16:10   ` Adrian Robert
  2007-11-23 23:00 ` Dan Nicolaescu
  2007-11-24 11:37 ` Emacs.app (Cocoa/GNUstep port) release and feature list William Xu
  3 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2007-11-23 15:29 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

Thanks Adrian.  It all sounds pretty good.  Except:

> - Keyboard handling: Support platform "Command" key as "Super".

>   The Command key is an extra key on this platform relative to typical
> X hardware.  Mapping it to Super and setting up appropriate
> keybindings allows Emacs to support full CUA keybindings on these
> systems without interfering with standard emacs Control and Meta
> bindings.

I hope that this is customizable for people such as myself who are more
familiar with Emacs than CUA and who find Apple's command and alt keys
a bit too small and tend to have trouble hitting one of them rather than
other and prefer to map them both to `meta'.

> - Menus: Prefer Super bindings in display of shortcuts.
>   This causes display of CUA bindings, similar to other platform apps.

And of course, if the command->Super mapping is not used, these Super
bindings should not appear in the menus (tho it wouldn't matter much
for me).

I looked at the sourceforge page and I couldn't find the sources in
the CVS.  Are you using a revision control system?  If not, why not, and
especially why not just put it all in Emacs's CVS repository?  If yes,
where is it?


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 14:56 ` David Reitter
  2007-11-23 15:25   ` YAMAMOTO Mitsuharu
@ 2007-11-23 15:38   ` Adrian Robert
  1 sibling, 0 replies; 25+ messages in thread
From: Adrian Robert @ 2007-11-23 15:38 UTC (permalink / raw)
  To: emacs- devel, david.reitter

> In general: do you support the established Mac specific customization
> variables? In particular:
>
> > - Keyboard handling: Support platform "Command" key as "Super".
>
> Is this a default, and can it be changed using `mac-command-modifier'?

The Cocoa port has "ns-command-modifier", the difference relating to
Mac-and-GNUstep vs. Mac-only -- but there's no reason the Cocoa port
can't add aliases that are more intuitive or follow conventions on the
Mac.



> > - Customization: Preferences panel for major GUI settings.
>
> There is no way to customize these dialogs via Lisp, i.e. add new
> options?
> While I find the UI approach very good, I think that a lack of
> interaction with the Lisp side of things would be rather un-Emacs-like.

They are completely optional.  .emacs settings take precedence in conflicts.



> Secondly, why introduce yet another system to store (rather than just
> load) Emacs-specific configuration variables?
> There  is `custom-file', and users can edit their .emacs.

It's just easier/quicker to use (in some people's opinion).
Personally I use customize and direct .emacs editing a lot, but for
quick UI customization still prefer the prefs dialog, font panel,
etc..



> - does your port run from anywhere in the system like any good
> application? The current Carbon port (including 22.1) crashes when
> started from directories with non-7-bit ASCII path names, such as /
> Applications/Développement/

A quick check here revealed no problems, maybe it's a difference from
the unicode branch..



> - does your port play nice with multi-screen setups, especially when
> screens are of different size? The Carbon port doesn't.

There were a couple of bugs with new frame creation and popup menus
but these have been fixed.  Could be other problems, I haven't really
tried w/diff sizes.



> - does your port take care to not open frames underneath the Dock (or
> otherwise) or enlarge them too much when changing font sizes?
> (Aquamacs / Carbon has trouble with this at the moment)

This was improved with the rc3 release.  The questionable cases that
remain are those where it's hard to choose one behavior over another.



> PS.: I can't run rc3 on my 10.5.1. machine. It quits immediately. If
> you need more info, let me know.

It would be great if you could send whatever info you can here (crash
log, gdb backtrace).  I don't have access to any Leopard machines,
probably won't for a while, but if it's something obvious from the
logs I can fix it.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 15:29 ` Stefan Monnier
@ 2007-11-23 16:10   ` Adrian Robert
  2007-11-23 16:24     ` Stefan Monnier
  0 siblings, 1 reply; 25+ messages in thread
From: Adrian Robert @ 2007-11-23 16:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> > - Keyboard handling: Support platform "Command" key as "Super".

> I hope that this is customizable for people such as myself who are more
> familiar with Emacs than CUA and who find Apple's command and alt keys
> a bit too small and tend to have trouble hitting one of them rather than
> other and prefer to map them both to `meta'.

This is supported.


> > - Menus: Prefer Super bindings in display of shortcuts.
> >   This causes display of CUA bindings, similar to other platform apps.
>
> And of course, if the command->Super mapping is not used, these Super
> bindings should not appear in the menus (tho it wouldn't matter much
> for me).

This seems reasonable from a user perspective, and I was thinking of
making this a customizable setting.  Autodetermining based on modifier
setting is another possibility.  Neither is straightforward owing to
the fact the displayed menu key shortcuts are precomputed.


> I looked at the sourceforge page and I couldn't find the sources in
> the CVS.  Are you using a revision control system?  If not, why not, and
> especially why not just put it all in Emacs's CVS repository?  If yes,
> where is it?

This port maintained its own CVS for a while, but that was messing up
existing tags in emacs files and also making syncing with emacs CVS
difficult.  I know there are git and arch alternatives here, but
Richard has said he is OK with bringing this into the trunk after the
unicode merge and that seems like the best route for maintenance.  (A
branch is another possibility but that still leaves an ongoing merge
burden.)

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 16:10   ` Adrian Robert
@ 2007-11-23 16:24     ` Stefan Monnier
  2007-11-23 17:40       ` CHENG Gao
  2007-11-25  6:58       ` Adrian Robert
  0 siblings, 2 replies; 25+ messages in thread
From: Stefan Monnier @ 2007-11-23 16:24 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

> This port maintained its own CVS for a while, but that was messing up
> existing tags in emacs files and also making syncing with emacs CVS
> difficult.  I know there are git and arch alternatives here, but
> Richard has said he is OK with bringing this into the trunk after the
> unicode merge and that seems like the best route for maintenance.  (A
> branch is another possibility but that still leaves an ongoing merge
> burden.)

I think it would be good to add it as a branch in the CVS.  It won't add
any "merge burden" that isn't already present.  And it will make it easier
to keep them synchronized, to compare them, etc...


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 16:24     ` Stefan Monnier
@ 2007-11-23 17:40       ` CHENG Gao
  2007-11-25  6:58       ` Adrian Robert
  1 sibling, 0 replies; 25+ messages in thread
From: CHENG Gao @ 2007-11-23 17:40 UTC (permalink / raw)
  To: emacs-devel

*On Fri, 23 Nov 2007 11:24:51 -0500
* Also sprach Stefan Monnier <monnier@iro.umontreal.ca>:

> I think it would be good to add it as a branch in the CVS.  It won't add
> any "merge burden" that isn't already present.  And it will make it easier
> to keep them synchronized, to compare them, etc...

If I understand not wrongly, this new release contains patchs to
emacs-unicode-2 branch source, and its platform-specific files reside
all in nextstep/ dir. Since I trust the patchs are for building on
MacOSX/Nextstep and wont hurt building of any other platforms, maybe a
new branch is not needed - patches can be committed directly to
emacs-unicode-2 branch and nextstep/ dir be added directly.

And thank you Adrian for your efforts. I wish this port can be merged
the soonest thus it can be tested the earliest by the greatest part of
MacOSX (& NextStep users). 

 
-- 
Vivere est cogitare

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 10:41 Emacs.app (Cocoa/GNUstep port) release and feature list Adrian Robert
  2007-11-23 14:56 ` David Reitter
  2007-11-23 15:29 ` Stefan Monnier
@ 2007-11-23 23:00 ` Dan Nicolaescu
  2007-11-24 10:39   ` Adrian Robert
  2007-11-24 11:37 ` Emacs.app (Cocoa/GNUstep port) release and feature list William Xu
  3 siblings, 1 reply; 25+ messages in thread
From: Dan Nicolaescu @ 2007-11-23 23:00 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

"Adrian Robert" <adrian.b.robert@gmail.com> writes:

  > Hi,
  > 
  > Release 9.0-rc3 for the GNUstep and OS X / Cocoa port of the GNU Emacs
  > unicode-2 is available at http://emacs-app/sf.net
  > 
  > This release brings with it the multi-TTY merge (mixed GUI/TTY
  > sessions not yet supported though), and a number of bug fixes and
  > minor enhancements.  GNUstep support is untested for this release;
  > please contact me off-list if you have a GNUstep installation and are
  > willing to try it out.
  > 
  > In view of the prospects for upcoming merge into CVS, it was suggested
  > that a list of user-visible differences in this port from other
  > platforms be posted.  See below.  A couple of general points should be
  > noted:

Thanks for doing this!

Here are a few observations from quickly scanning the code: 

In loadup.el:

(if (featurep 'ns-windowing)
              ^^^^^^^
              Some better name here? There's no identifier in emacs that
              contains "windowing"

    (progn
      (load "emacs-lisp/easymenu")
      (load "emacs-lisp/easy-mmode")
      (load "view")
      (load "help-mode")
      (load "help-fns")
      (load "emacs-lisp/advice")
      (load "ns-mark-nav")
      (load "paren")

Are these acceptable to be preloaded in platform specific code? IMHO no.

These files: 

 lisp/erc/erc-nicklist.el           |only
 lisp/net/tramp-util.el             |only
 lisp/net/tramp-vc.el               |only
 lisp/tumme.el                      |only
 src/s/umips.h                      |only

have been deleted from Emacs CVS

 lisp/mic-paren.el                  |only

This is unrelated to the port, either submit separately or drop it.

 lisp/ns-grabenv.el                 |only

Doesn't the Carbon port have the same problem that this file tries to
solve? Does GNUstep have this problem? Is the ns-* name appropriate
then?

 lisp/ns-mark-nav.el                |only

This does not seem to be specific to the port, why not submit is separately?

 lisp/term/ns-win.el

   The functions/variables in here should either be called ns-* or x-*
   
   (setq transient-mark-mode t
   This needs to be a function call, not setq
   
         highlight-nonselected-windows nil
   Already the default
         delete-selection-mode t
   As above
   
         search-highlight t
         query-replace-highlight t
         split-window-keep-point t
   All are already the default
         mouse-copy-selection nil
   Non-existent variable
         frame-title-format t
         icon-title-format t)
   These might be incorrect
   
   (mouse-wheel-mode 1)
   Already done by default.
   
   Are the deffaces really needed in this file?
   

I think you posted the changes to lisp/progmodes/cc-*.el to this
list. What keeps them from being checked in CVS? They are not related to
this port, just unnecessary overhead for you...
   

The comments in the ns*.m files use both // and /**/. Why not
standardize on /**/? That would make the sources consistent with the
rest of emacs, and it would be easier to move code from .m files to .c
files (if it's ever needed). 

The new #defines: HAVE_NS GNUSTEP COCOA COCOA_EXPERIMENTAL_CTRL_G

Why not HAVE_GNUSTEP and HAVE_COCOA too? 

Also it seems that !GNUSTEP is the same as COCOA. Why not just use one
of them?

Don't do any #ifdef MULTI_KBOARD, just assume it is always defined.

Can the icons be shared with the Carbon port?

Is the nextstep/compile script really needed? Wouldn't 
./configure && make 
work on this platform?

You probably know RMS won't allow this code to be checked in without
proper ChangeLogs...


I hope this helps.

            --dan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 23:00 ` Dan Nicolaescu
@ 2007-11-24 10:39   ` Adrian Robert
  2007-11-24 16:33     ` Dan Nicolaescu
                       ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: Adrian Robert @ 2007-11-24 10:39 UTC (permalink / raw)
  To: emacs-devel

On 11/24/07, Dan Nicolaescu <dann@ics.uci.edu> wrote:

>     (progn
>       (load "emacs-lisp/easymenu")
>       (load "emacs-lisp/easy-mmode")
>       (load "view")
>       (load "help-mode")
>       (load "help-fns")
>       (load "emacs-lisp/advice")
>       (load "ns-mark-nav")
>       (load "paren")
>
> Are these acceptable to be preloaded in platform specific code? IMHO no.

Could you elaborate on this?  These are loaded because setup in ns-win
needs them.    Is there some detrimental effect in loading them now
that ns-win must be loaded pre-dump?



>  lisp/mic-paren.el                  |only
>
> This is unrelated to the port, either submit separately or drop it.

Will do so.



>  lisp/ns-grabenv.el                 |only
>
> Doesn't the Carbon port have the same problem that this file tries to
> solve? Does GNUstep have this problem? Is the ns-* name appropriate
> then?

You are right this solves a problem mainly encountered on the Mac
platform for the Cocoa port.  However it currently names all its
functions with the "ns-" prefix, so it seemed inappropriate to use
"mac-".  It could also have some use on GNUstep or other platforms if
the user edits his/her .cshrc after starting emacs.  So theoretically
it could be added to emacs core lisp functionality, but I would
recommend to extend it to work on Windows as well first.



>  lisp/ns-mark-nav.el                |only
>
> This does not seem to be specific to the port, why not submit is separately?

It is generic functionality, it could be submitted separately if it is
of interest.



>  lisp/term/ns-win.el
>
>    The functions/variables in here should either be called ns-* or x-*

OK.




>    Are the deffaces really needed in this file?

ns-working-text-face is needed.  paren-face-match-light will be
removed along with mic-paren when/if a merge becomes imminent.



> I think you posted the changes to lisp/progmodes/cc-*.el to this
> list. What keeps them from being checked in CVS? They are not related to
> this port, just unnecessary overhead for you...

They are still not accepted by the maintainer yet.  If they get
accepted I can take them out.  Otherwise I feel they should at least
be bundled as part of the port, because Objective-C is the primary
development language for both Mac and GNUstep.



> The new #defines: HAVE_NS GNUSTEP COCOA COCOA_EXPERIMENTAL_CTRL_G
>
> Why not HAVE_GNUSTEP and HAVE_COCOA too?

HAVE_XX seems to be standard for the overall windowing system / port
being used: HAVE_XWINDOWS, HAVE_NTGUI.  GNUSTEP and COCOA are platform
indicators, like DARWIN, MAC_OS8, GNU_LINUX, or VMS.  I would use
"MAC_OSX" instead of COCOA, but that is already used by the Carbon
port to mean essentially HAVE_CARBONGUI.



> Also it seems that !GNUSTEP is the same as COCOA. Why not just use one
> of them?

I'm fine to make this change if people think it's easier to read.



> Don't do any #ifdef MULTI_KBOARD, just assume it is always defined.

I don't understand this.  There is lots of #ifdef MULTI_KEYBOARD in
the emacs code.



> Can the icons be shared with the Carbon port?

Emacs.app does not include any icons.  Unless you're talking about the
main app icon.  For now I think it's best to use a different one, so
users know which version they are running.



> Is the nextstep/compile script really needed? Wouldn't
> ./configure && make
> work on this platform?

With a little work it would not be needed.  It is there to pick up
environment variable settings (GNUstep) and to complete packaging
operations into the .app (both platforms).  it also makes building
easier for end users, because this port is distributed directly right
now to the user community.



> You probably know RMS won't allow this code to be checked in without
> proper ChangeLogs...

There is nextstep/ChangeLog reflecting everything during my
maintainership period.  I don't think anything from the years previous
to that will be available.


> I hope this helps.

Thanks much for this feedback.


Adrian

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 10:41 Emacs.app (Cocoa/GNUstep port) release and feature list Adrian Robert
                   ` (2 preceding siblings ...)
  2007-11-23 23:00 ` Dan Nicolaescu
@ 2007-11-24 11:37 ` William Xu
  2007-11-24 12:47   ` YAMAMOTO Mitsuharu
  3 siblings, 1 reply; 25+ messages in thread
From: William Xu @ 2007-11-24 11:37 UTC (permalink / raw)
  To: emacs-devel

"Adrian Robert" <adrian.b.robert@gmail.com> writes:

> - Integration: drag/drop of files and text.
>
>   Text or file dragged to an emacs window is inserted; file dragged to
> application icon opened in new buffer.

It seems to me there's no need to distinguish them, as inserting is far
less common. At least carbon emacs doesn't. Any other emacs version that
distinguishes them?

-- 
William

http://williamxu.net9.org

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-24 11:37 ` Emacs.app (Cocoa/GNUstep port) release and feature list William Xu
@ 2007-11-24 12:47   ` YAMAMOTO Mitsuharu
  0 siblings, 0 replies; 25+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-11-24 12:47 UTC (permalink / raw)
  To: william.xwl; +Cc: emacs-devel

>>>>> On Sat, 24 Nov 2007 20:37:07 +0900, William Xu <william.xwl@gmail.com> said:

> "Adrian Robert" <adrian.b.robert@gmail.com> writes:
>> - Integration: drag/drop of files and text.
>> 
>> Text or file dragged to an emacs window is inserted; file dragged
>> to application icon opened in new buffer.

> It seems to me there's no need to distinguish them, as inserting is
> far less common. At least carbon emacs doesn't. Any other emacs
> version that distinguishes them?

The Carbon(+AppKit) port does distinguish them, but the default
behaviors just look the same.  Files dropped into the application icon
are always opened by `dnd-open-local-file'.  Files dropped into an
Emacs frame are passed to `dnd-handle-one-url' like other platforms so
users/major modes can customize the drag-and-drop behavior in a
platform-independent way.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-24 10:39   ` Adrian Robert
@ 2007-11-24 16:33     ` Dan Nicolaescu
  2007-11-25 11:17       ` Adrian Robert
  2007-11-24 23:32     ` YAMAMOTO Mitsuharu
  2007-12-01 12:30     ` Adrian Robert
  2 siblings, 1 reply; 25+ messages in thread
From: Dan Nicolaescu @ 2007-11-24 16:33 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

"Adrian Robert" <adrian.b.robert@gmail.com> writes:

  > On 11/24/07, Dan Nicolaescu <dann@ics.uci.edu> wrote:
  > 
  > >     (progn
  > >       (load "emacs-lisp/easymenu")
  > >       (load "emacs-lisp/easy-mmode")
  > >       (load "view")
  > >       (load "help-mode")
  > >       (load "help-fns")
  > >       (load "emacs-lisp/advice")
  > >       (load "ns-mark-nav")
  > >       (load "paren")
  > >
  > > Are these acceptable to be preloaded in platform specific code? IMHO no.
  > 
  > Could you elaborate on this?  These are loaded because setup in ns-win
  > needs them.    Is there some detrimental effect in loading them now
  > that ns-win must be loaded pre-dump?

We are trying to minimize the number of files preloaded, if you look in
loadup.el no other platform loads these files, you'd need to justify the
need to load them.

emacs-lisp/advice will 100% be rejected, if you need different
functionality, just change the function, not advice it.

  > >  lisp/ns-grabenv.el                 |only
  > >
  > > Doesn't the Carbon port have the same problem that this file tries to
  > > solve? Does GNUstep have this problem? Is the ns-* name appropriate
  > > then?
  > 
  > You are right this solves a problem mainly encountered on the Mac
  > platform for the Cocoa port.  

Are you saying that the Carbon port does not have to deal with this issue.

  > However it currently names all its functions with the "ns-" prefix,
  > so it seemed inappropriate to use "mac-".  It could also have some
  > use on GNUstep or other platforms if the user edits his/her .cshrc
  > after starting emacs.  

That is a generic problem then, just post it here separately and see if
it will get included.

  > >  lisp/ns-mark-nav.el                |only
  > >
  > > This does not seem to be specific to the port, why not submit is separately?
  > 
  > It is generic functionality, it could be submitted separately if it is
  > of interest.

Please do that then.

  > >  lisp/term/ns-win.el
  > 
  > >    Are the deffaces really needed in this file?
  > 
  > ns-working-text-face is needed.  paren-face-match-light will be
  > removed along with mic-paren when/if a merge becomes imminent.

That's not very productive for the people reviewing this code: if
something won't be included, then drop it and keep it as local
customization, it won't force unnecessary extra work on people trying to
help with the merge.

BTW, I just noticed this: 
(makunbound 'yank-menu-length)
(defcustom yank-menu-length 40

Use customize-set-variable instead. But even that would need
justification for changing a default in a platform specific file.


  > > I think you posted the changes to lisp/progmodes/cc-*.el to this
  > > list. What keeps them from being checked in CVS? They are not related to
  > > this port, just unnecessary overhead for you...
  > 
  > They are still not accepted by the maintainer yet.  If they get
  > accepted I can take them out.  Otherwise I feel they should at least
  > be bundled as part of the port, because Objective-C is the primary
  > development language for both Mac and GNUstep.

Were the changes not reviewed or not accepted at all? If the former, I'd
advice you repost them here, CCing RMS. In general he keeps track of
submitted patches.

  > > The new #defines: HAVE_NS GNUSTEP COCOA COCOA_EXPERIMENTAL_CTRL_G
  > >
  > > Why not HAVE_GNUSTEP and HAVE_COCOA too?
  > 
  > HAVE_XX seems to be standard for the overall windowing system / port
  > being used: HAVE_XWINDOWS, HAVE_NTGUI.  GNUSTEP and COCOA are platform
  > indicators, like DARWIN, MAC_OS8, GNU_LINUX, or VMS.  

IMHO it is much cleaner to use the HAVE_ prefix for new code. Besides
COCOA is not such a widely known term for the people that work on
emacs...

  > I would use "MAC_OSX" instead of COCOA, but that is already used by
  > the Carbon port to mean essentially HAVE_CARBONGUI.

That sounds very confusing!

  > > Also it seems that !GNUSTEP is the same as COCOA. Why not just use one
  > > of them?
  > 
  > I'm fine to make this change if people think it's easier to read.

Yeah, the least amount of identifiers that one has to learn the meaning
for, the better.

  > > Don't do any #ifdef MULTI_KBOARD, just assume it is always defined.
  > 
  > I don't understand this.  There is lots of #ifdef MULTI_KEYBOARD in
  > the emacs code.

For historic reasons, and it is only needed in multi-platform code. Only
the DOS port still needs !MULTI_KBOARD.

The Cocoa port defines MULTI_KBOARD unconditionally, so there's no need
to deal with it in platform specific code, it's just noise.

  > > Can the icons be shared with the Carbon port?
  > 
  > Emacs.app does not include any icons.  Unless you're talking about the
  > main app icon.  For now I think it's best to use a different one, so
  > users know which version they are running.

On X11, we don't have different icons for running with different
toolkits...

  > > Is the nextstep/compile script really needed? Wouldn't
  > > ./configure && make
  > > work on this platform?
  > 
  > With a little work it would not be needed.  

It would be great to not have to have different build instructions for
different platforms. But that might be done after the merge too. You
might want to consult RMS on this.

  > > You probably know RMS won't allow this code to be checked in without
  > > proper ChangeLogs...
  > 
  > There is nextstep/ChangeLog reflecting everything during my
  > maintainership period.  I don't think anything from the years
  > previous to that will be available.

Please follow the example in other branches: place the ChangeLog files
in the appropriate directories and call them ChangeLog.cocoa. 

For new files you just need a single entry: New file. Every single
change to generic emacs code needs to have a ChangeLog entry describing
it, even if it was done before you maintained the code.  If you'd look
on the mailing list for the experience with merging other code, you'd
see that RMS won't allow merges to proceed until the ChangeLogs are
acceptable.


        --dan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-24 10:39   ` Adrian Robert
  2007-11-24 16:33     ` Dan Nicolaescu
@ 2007-11-24 23:32     ` YAMAMOTO Mitsuharu
  2007-12-01 12:30     ` Adrian Robert
  2 siblings, 0 replies; 25+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-11-24 23:32 UTC (permalink / raw)
  To: emacs-devel

>>>>> On Sat, 24 Nov 2007 13:39:26 +0300, "Adrian Robert" <adrian.b.robert@gmail.com> said:

> GNUSTEP and COCOA are platform indicators, like DARWIN, MAC_OS8,
> GNU_LINUX, or VMS.

What would happen if one tries to make the GNUstep build on Mac OS X?

> I would use "MAC_OSX" instead of COCOA, but that is already used by
> the Carbon port to mean essentially HAVE_CARBONGUI.

No, MAC_OSX does not necessarily mean HAVE_CARBON.  Actually, MAC_OSX
is defined also on the X11 build for Mac OS X.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-23 16:24     ` Stefan Monnier
  2007-11-23 17:40       ` CHENG Gao
@ 2007-11-25  6:58       ` Adrian Robert
  1 sibling, 0 replies; 25+ messages in thread
From: Adrian Robert @ 2007-11-25  6:58 UTC (permalink / raw)
  To: emacs-devel

On 11/23/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> > This port maintained its own CVS for a while, but that was messing up
> > existing tags in emacs files and also making syncing with emacs CVS
> > difficult.  I know there are git and arch alternatives here, but
> > Richard has said he is OK with bringing this into the trunk after the
> > unicode merge and that seems like the best route for maintenance.  (A
> > branch is another possibility but that still leaves an ongoing merge
> > burden.)
>
> I think it would be good to add it as a branch in the CVS.  It won't add
> any "merge burden" that isn't already present.  And it will make it easier
> to keep them synchronized, to compare them, etc...

If this is the preferred route I'll consider it, but on the whole I'd
rather just wait and merge to trunk, unless that is far off or might
not happen.  I've been posting diffs on sourceforge for comparison
purposes.  What was the merge process for the Carbon port?

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-24 16:33     ` Dan Nicolaescu
@ 2007-11-25 11:17       ` Adrian Robert
  2007-11-25 17:09         ` Dan Nicolaescu
  0 siblings, 1 reply; 25+ messages in thread
From: Adrian Robert @ 2007-11-25 11:17 UTC (permalink / raw)
  To: emacs-devel

On 11/24/07, Dan Nicolaescu <dann@ics.uci.edu> wrote:

> We are trying to minimize the number of files preloaded, if you look in
> loadup.el no other platform loads these files, you'd need to justify the
> need to load them.
>
> emacs-lisp/advice will 100% be rejected, if you need different
> functionality, just change the function, not advice it.

OK, I've dropped advice and its prereqs, dropped paren (because drop
mic-paren), and ns-mark-nav will be submitted separately.  All that is
left are easymenu and easy-mmode.  These are needed to ease the pain
in making the minor menu changes needed for platform convention in
ns-win.  Are they a problem?



>  > >  lisp/ns-grabenv.el                 |only
>  > >
>  > > Doesn't the Carbon port have the same problem that this file tries to
>  > > solve? Does GNUstep have this problem? Is the ns-* name appropriate
>  > > then?
>  >
>  > You are right this solves a problem mainly encountered on the Mac
>  > platform for the Cocoa port.
>
> Are you saying that the Carbon port does not have to deal with this issue.

There are multiple ways for users to tackle it.  Emacs.app includes
two (ns-grabenv.el and mac-fix-env binary), and some Carbon users take
these out of the Emacs.app dist and use them.  Many Carbon users use
Aquamacs, a distribution that includes its own approach to the problem
(basically auto-invoke something like ns-grabenv on startup).  Power
OS X users can and do work around the issue without any of these
tools.



>  > >  lisp/term/ns-win.el
>  >
>  > >    Are the deffaces really needed in this file?
>  >
>  > ns-working-text-face is needed.  paren-face-match-light will be
>  > removed along with mic-paren when/if a merge becomes imminent.
>
> That's not very productive for the people reviewing this code: if
> something won't be included, then drop it and keep it as local
> customization, it won't force unnecessary extra work on people trying to
> help with the merge.

OK , removed, will be reflected in next release.



> BTW, I just noticed this:
> (makunbound 'yank-menu-length)
> (defcustom yank-menu-length 40
>
> Use customize-set-variable instead. But even that would need
> justification for changing a default in a platform specific file.

Dropped (though IMHO the default of 20 is unnecessarily small).



>  > > I think you posted the changes to lisp/progmodes/cc-*.el to this
>  > > list. What keeps them from being checked in CVS? They are not related to
>  > > this port, just unnecessary overhead for you...
>  >
>  > They are still not accepted by the maintainer yet.  If they get
>  > accepted I can take them out.  Otherwise I feel they should at least
>  > be bundled as part of the port, because Objective-C is the primary
>  > development language for both Mac and GNUstep.
>
> Were the changes not reviewed or not accepted at all? If the former, I'd
> advice you repost them here, CCing RMS. In general he keeps track of
> submitted patches.

RMS and Alan Mackenzie seemed OK with acceptance, but I think Alan has
not had time to look at it since.  I'm not sure if maybe some
objection will be found.  See thread associated with:

http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01428.html



>  > > Also it seems that !GNUSTEP is the same as COCOA. Why not just use one of them?
>  >
>  > I'm fine to make this change if people think it's easier to read.
>
> Yeah, the least amount of identifiers that one has to learn the meaning
> for, the better.

I'll drop COCOA and look into dropping GNUSTEP in favor of !MAC_OSX.
Although, to answer Yamamoto-san's question, building GNUSTEP under OS
X should be left possible, since people do install GNUstep on Macs.



>  > > Don't do any #ifdef MULTI_KBOARD, just assume it is always defined.

Done.



>  > Emacs.app does not include any icons.  Unless you're talking about the
>  > main app icon.  For now I think it's best to use a different one, so
>  > users know which version they are running.
>
> On X11, we don't have different icons for running with different
> toolkits...

For merging I will switch to the standard (notebook) icons used for
Carbon.  If I continue an enhanced binary distribution I'll use the
current Emacs.app icon.



> Please follow the example in other branches: place the ChangeLog files
> in the appropriate directories and call them ChangeLog.cocoa.
>
> For new files you just need a single entry: New file. Every single
> change to generic emacs code needs to have a ChangeLog entry describing
> it, even if it was done before you maintained the code.

OK, this will be done.


Adrian

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-25 11:17       ` Adrian Robert
@ 2007-11-25 17:09         ` Dan Nicolaescu
  0 siblings, 0 replies; 25+ messages in thread
From: Dan Nicolaescu @ 2007-11-25 17:09 UTC (permalink / raw)
  To: Adrian Robert; +Cc: emacs-devel

"Adrian Robert" <adrian.b.robert@gmail.com> writes:

  > On 11/24/07, Dan Nicolaescu <dann@ics.uci.edu> wrote:
  > 
  > > We are trying to minimize the number of files preloaded, if you look in
  > > loadup.el no other platform loads these files, you'd need to justify the
  > > need to load them.
  > >
  > > emacs-lisp/advice will 100% be rejected, if you need different
  > > functionality, just change the function, not advice it.
  > 
  > OK, I've dropped advice and its prereqs, dropped paren (because drop
  > mic-paren), and ns-mark-nav will be submitted separately.  All that is
  > left are easymenu and easy-mmode.  These are needed to ease the pain
  > in making the minor menu changes needed for platform convention in
  > ns-win.  Are they a problem?

IMHO they probably are. One possible solution: change the code in
menu-bar.el to create menus the way you want them for this platform
instead of tweaking the menus in ns-win.el.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-11-24 10:39   ` Adrian Robert
  2007-11-24 16:33     ` Dan Nicolaescu
  2007-11-24 23:32     ` YAMAMOTO Mitsuharu
@ 2007-12-01 12:30     ` Adrian Robert
  2007-12-01 20:49       ` Stefan Monnier
  2 siblings, 1 reply; 25+ messages in thread
From: Adrian Robert @ 2007-12-01 12:30 UTC (permalink / raw)
  To: emacs-devel; +Cc: Dan Nicolaescu

> > The new #defines: HAVE_NS GNUSTEP COCOA COCOA_EXPERIMENTAL_CTRL_G
> >
> > Why not HAVE_GNUSTEP and HAVE_COCOA too?
>
> HAVE_XX seems to be standard for the overall windowing system / port
> being used: HAVE_XWINDOWS, HAVE_NTGUI.  GNUSTEP and COCOA are platform
> indicators, like DARWIN, MAC_OS8, GNU_LINUX, or VMS.  I would use
> "MAC_OSX" instead of COCOA, but that is already used by the Carbon
> port to mean essentially HAVE_CARBONGUI.
>
>
>
> > Also it seems that !GNUSTEP is the same as COCOA. Why not just use one
> > of them?
>
> I'm fine to make this change if people think it's easier to read.

I tried this, but on second thought there are two problems.  First,
GNUSTEP and COCOA are both implementations of the NeXTstep API.  There
are others out there, and if Emacs.app one day supports them then it
will need more than GNUSTEP and !GNUSTEP.  Also, it is not sufficient
to assume if MAC_OSX then COCOA, because GNUstep (and possibly other
implementations) can and are installed and used under OS X.

Second, it seems less readable to use "#ifndef XXX" for blocks of code
that are enabled on platform YYY. " #if YYY" (without the negative) is
clearer, even at the cost of additional identifiers.

I could rename them to something like NS_IMPL_GNUSTEP, NS_IMPL_COCOA
(or NS_VENDOR_GNU, NS_VENDOR_APPLE) to make their meaning clearer.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Emacs.app (Cocoa/GNUstep port) release and feature list
  2007-12-01 12:30     ` Adrian Robert
@ 2007-12-01 20:49       ` Stefan Monnier
  2007-12-10 16:47         ` MAC_OS_X cpp macro? Stefan Monnier
  2007-12-10 17:04         ` admin/CPP-DEFINES Stefan Monnier
  0 siblings, 2 replies; 25+ messages in thread
From: Stefan Monnier @ 2007-12-01 20:49 UTC (permalink / raw)
  To: Adrian Robert; +Cc: Dan Nicolaescu, emacs-devel

> I tried this, but on second thought there are two problems.  First,
> GNUSTEP and COCOA are both implementations of the NeXTstep API.  There
> are others out there, and if Emacs.app one day supports them then it
> will need more than GNUSTEP and !GNUSTEP.  Also, it is not sufficient
> to assume if MAC_OSX then COCOA, because GNUstep (and possibly other
> implementations) can and are installed and used under OS X.

> Second, it seems less readable to use "#ifndef XXX" for blocks of code
> that are enabled on platform YYY. " #if YYY" (without the negative) is
> clearer, even at the cost of additional identifiers.

> I could rename them to something like NS_IMPL_GNUSTEP, NS_IMPL_COCOA
> (or NS_VENDOR_GNU, NS_VENDOR_APPLE) to make their meaning clearer.

On a related note: do we have somewhere a list of such CPP defines with
their intended meanings?  If so, where?  If not, then let's make one.


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* MAC_OS_X cpp macro?
  2007-12-01 20:49       ` Stefan Monnier
@ 2007-12-10 16:47         ` Stefan Monnier
  2007-12-11  1:08           ` YAMAMOTO Mitsuharu
  2007-12-10 17:04         ` admin/CPP-DEFINES Stefan Monnier
  1 sibling, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2007-12-10 16:47 UTC (permalink / raw)
  Cc: emacs-devel

> On a related note: do we have somewhere a list of such CPP defines with
> their intended meanings?  If so, where?  If not, then let's make one.

While taking a look at this idea, I bumped into the following in mac.c:

   [...]
   #ifndef MAC_OS_X
   [...]

AFAICT it's the only occurrence of MAC_OS_X in an ifdef/ifndef, whereas
there are many occurrences of MAC_OSX.  Is that a typo?


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* admin/CPP-DEFINES
  2007-12-01 20:49       ` Stefan Monnier
  2007-12-10 16:47         ` MAC_OS_X cpp macro? Stefan Monnier
@ 2007-12-10 17:04         ` Stefan Monnier
  2007-12-14 12:42           ` admin/CPP-DEFINES Eli Zaretskii
  1 sibling, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2007-12-10 17:04 UTC (permalink / raw)
  To: emacs-devel

I've just added an embryo file admin/CPP-DEFINES to list the macros that
we use together with their intended meaning.  Please help me fill it,
correct misconceptions, and remove the question marks.


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: MAC_OS_X cpp macro?
  2007-12-10 16:47         ` MAC_OS_X cpp macro? Stefan Monnier
@ 2007-12-11  1:08           ` YAMAMOTO Mitsuharu
  2007-12-11 18:57             ` Stefan Monnier
  0 siblings, 1 reply; 25+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-12-11  1:08 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

>>>>> On Mon, 10 Dec 2007 11:47:56 -0500, Stefan Monnier <monnier@iro.umontreal.ca> said:

>> On a related note: do we have somewhere a list of such CPP defines
>> with their intended meanings?  If so, where?  If not, then let's
>> make one.

> While taking a look at this idea, I bumped into the following in
> mac.c:

>    [...]  #ifndef MAC_OS_X [...]

> AFAICT it's the only occurrence of MAC_OS_X in an ifdef/ifndef,
> whereas there are many occurrences of MAC_OSX.  Is that a typo?

Yes, it is a typo and does not do harm at this particular place.  I
was planning to fix it when merging the Mac-related changes as of the
before-merge-multi-tty-to-trunk tag to EMACS_22_BASE after the Emacs
22.2 release.

And some comments about some Mac-related defines in admin/CPP-DEFINES:

> MAC_OS		Compiling for some version of Mac OS?

In short, it corresponds to (eq window-system 'mac), or is equivalent
to `MAC_OS8 || (MAC_OSX && HAVE_CARBON)'.  Currently it can be said as
"Compile support for the Mac native GUI", but this will no longer be
true if the Cocoa port is merged.

> MAC_OS8		Compiling for Mac OS version 8.  Requires MAC_OS?

Compiling for Mac OS Classic (8 or 9).

> MAC_OSX		Compiling for Mac OS X?  Is that also valid for Darwin?

Compiling for Mac OS X.  Not valid for bare Darwin.
Also, DARWIN should not be defined for Mac OS X because it is used for
distinguishing them in CoreFoundation.h.

> HAVE_CARBON	Compile support for the Carbon GUI.  Requires MAC_OS?

Yes.  For MAC_OS8, either of HAVE_CARBON and !HAVE_CARBON is possible
and the native GUI is used anyway.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: MAC_OS_X cpp macro?
  2007-12-11  1:08           ` YAMAMOTO Mitsuharu
@ 2007-12-11 18:57             ` Stefan Monnier
  2007-12-12  0:07               ` YAMAMOTO Mitsuharu
  0 siblings, 1 reply; 25+ messages in thread
From: Stefan Monnier @ 2007-12-11 18:57 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: emacs-devel

>> MAC_OS		Compiling for some version of Mac OS?

> In short, it corresponds to (eq window-system 'mac), or is equivalent
> to `MAC_OS8 || (MAC_OSX && HAVE_CARBON)'.  Currently it can be said as
> "Compile support for the Mac native GUI", but this will no longer be
> true if the Cocoa port is merged.

Hmm... see below.

>> MAC_OSX		Compiling for Mac OS X?  Is that also valid for Darwin?
> Compiling for Mac OS X.  Not valid for bare Darwin.
> Also, DARWIN should not be defined for Mac OS X because it is used for
> distinguishing them in CoreFoundation.h.

OK.

>> HAVE_CARBON	Compile support for the Carbon GUI.  Requires MAC_OS?

> Yes.  For MAC_OS8, either of HAVE_CARBON and !HAVE_CARBON is possible
> and the native GUI is used anyway.

What's the difference between MAC_OS8 with HAVE_CARBON and MAC_OS8
without HAVE_CARBON?

If there is none, then HAVE_CARBON and MAC_OS seem to be equivalent.


        Stefan

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: MAC_OS_X cpp macro?
  2007-12-11 18:57             ` Stefan Monnier
@ 2007-12-12  0:07               ` YAMAMOTO Mitsuharu
  0 siblings, 0 replies; 25+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-12-12  0:07 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

>>>>> On Tue, 11 Dec 2007 13:57:48 -0500, Stefan Monnier <monnier@iro.umontreal.ca> said:

>>> HAVE_CARBON Compile support for the Carbon GUI.  Requires MAC_OS?

>> Yes.  For MAC_OS8, either of HAVE_CARBON and !HAVE_CARBON is
>> possible and the native GUI is used anyway.

> What's the difference between MAC_OS8 with HAVE_CARBON and MAC_OS8
> without HAVE_CARBON?

The former uses the Carbon APIs, and the latter uses the earlier APIs.

http://developer.apple.com/documentation/Carbon/Conceptual/carbon_porting_guide/cpg_intro_struct/chapter_1_section_1.html

So MAC_OS does not necessarily mean HAVE_CARBON.

In Emacs 23, removal of the whole Mac OS Classic (8 or 9) support is
much more likely to happen than that of the Carbon support.  Then this
distinction will become meaningless in that version.  Of course, the
documentation for cpp defines is still useful to read the Emacs 22
code.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: admin/CPP-DEFINES
  2007-12-10 17:04         ` admin/CPP-DEFINES Stefan Monnier
@ 2007-12-14 12:42           ` Eli Zaretskii
  0 siblings, 0 replies; 25+ messages in thread
From: Eli Zaretskii @ 2007-12-14 12:42 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Mon, 10 Dec 2007 12:04:34 -0500
> 
> I've just added an embryo file admin/CPP-DEFINES to list the macros that
> we use together with their intended meaning.  Please help me fill it,
> correct misconceptions, and remove the question marks.

I added some more symbols and fixed a few ``misconceptions''.

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2007-12-14 12:42 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-23 10:41 Emacs.app (Cocoa/GNUstep port) release and feature list Adrian Robert
2007-11-23 14:56 ` David Reitter
2007-11-23 15:25   ` YAMAMOTO Mitsuharu
2007-11-23 15:38   ` Adrian Robert
2007-11-23 15:29 ` Stefan Monnier
2007-11-23 16:10   ` Adrian Robert
2007-11-23 16:24     ` Stefan Monnier
2007-11-23 17:40       ` CHENG Gao
2007-11-25  6:58       ` Adrian Robert
2007-11-23 23:00 ` Dan Nicolaescu
2007-11-24 10:39   ` Adrian Robert
2007-11-24 16:33     ` Dan Nicolaescu
2007-11-25 11:17       ` Adrian Robert
2007-11-25 17:09         ` Dan Nicolaescu
2007-11-24 23:32     ` YAMAMOTO Mitsuharu
2007-12-01 12:30     ` Adrian Robert
2007-12-01 20:49       ` Stefan Monnier
2007-12-10 16:47         ` MAC_OS_X cpp macro? Stefan Monnier
2007-12-11  1:08           ` YAMAMOTO Mitsuharu
2007-12-11 18:57             ` Stefan Monnier
2007-12-12  0:07               ` YAMAMOTO Mitsuharu
2007-12-10 17:04         ` admin/CPP-DEFINES Stefan Monnier
2007-12-14 12:42           ` admin/CPP-DEFINES Eli Zaretskii
2007-11-24 11:37 ` Emacs.app (Cocoa/GNUstep port) release and feature list William Xu
2007-11-24 12:47   ` YAMAMOTO Mitsuharu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).