unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: David De La Harpe Golden <david@harpegolden.net>
To: german@xelalug.org
Cc: Emacs <emacs-devel@gnu.org>
Subject: Re: Emacs with Cocoa/GNUstep
Date: Wed, 27 Apr 2011 20:13:51 +0100	[thread overview]
Message-ID: <4DB86AEF.7060809@harpegolden.net> (raw)
In-Reply-To: <1303864750.11832.3.camel@german-desktop>

On 27/04/11 01:39, Germán Arias wrote:
> Hi, I'm trying to run emacs with GNUstep, but it seems to be totally
> broken. So my question is if someone is running emacs with Cocoa and if
> it works fine. Because with latest gnustep packages don't work (compile
> but can't run). And after the last update in file configure.in, the
> class nsmenu.m can't compile. So I can guess there isn't testing in
> GNUstep/Cocoa.

Probably not a whole lot.... FWIW, I built it successfully several times 
a few months back, and though it was not really especially useful once 
built, it was not completely unusable either, it was working enough for 
me to debug some pasteboard interaction issues without having access to 
macosx.

I'm not personally up to doing much it about it at the moment, so here 
are some notes (Stefan: mostly same ones I passed offlist to you at the 
time) as a braindump, some of the below is probably obsolete:

First and foremost, DO NOT use any debian packages of GNUstep at time of 
writing, they're obsolete and hopelessly buggy, especially on 64-bit.  I 
wasted basically a weekend's worth of emacs-time that way, I switched to 
an svn checkout of GNUstep installed to /usr/local/GNUstep and was up 
and running fairly rapidly.

GNUstep itself is fairly painless to build from source (though n.b. I am 
used to underdocumented build scripts from hell from work, my perception 
may be skewed), the most tricky bit was getting building the 
gnustep-back backend right, so that I could use cairo.

http://wiki.gnustep.org/index.php/GNUstep_Installation_Process

The other build-time issue is that emacs "./configure --with-ns" doesn't 
seem to discover the ObjC headers properly in the gnustep case - 
specifying CPPFLAGS "fixed" that, but I suspect TRT would be to have 
emacs' configure use "gnustep-config --objc-flags" to discover the flags 
(or maybe just $GNUSTEP_MAKEFILES and the right part of gnustep's 
Makefiles, but gnustep-config seems interesting 'cos it apparently works 
much like other blah-config type tools).

I wouldn't say it is _totally_ unusable, but neither is it at all 
pleasant .  There are probably plenty more smaller issues that I'm 
presently not noticing given the big ones:

0. Make sure the relevant gnustep daemons are running.

I mean the gpbs / gdnc /gdomap  daemons. Not really an emacs problem, 
and documented in the gnustep docs, just something to be aware of.

gpbs is particularly important, as it's the GNUstep PasteBoard Server, 
and without it, clipboard/primary/secondary just ain't gonna work.

http://gnustep.made-it.com/BuildGuide/index.html#GNUSTEP.SERVICES

1. frame resizing.

The single most major annoyance (or at least tied with repaint) is that 
it doesn't handle being resized by the window manager, you have to 
(set-frame-width/height) from within emacs for it to work.  I guess 
macosx handles resizing differently.

2. repaint

There are nasty repaint issues sometimes too upon partial scrolling, a 
bit like the ones you used to see on w32 emacs under wine.  A 
page-scroll up and down has thus far largely dispelled them when they 
occur. Some of the colors seem way off (my yellow-on-black fringes come 
out cyan-on-white).

3. toolbar/scrollbar.

The toolbar doesn't work, and the scrollbars only work sometimes, but 
it's not like I use either much.  The menu bar is fine.

4. choice of fonts and gui backend:

Wrong choice of font can render it difficult to use too - its metric 
computation isn't always right I guess, with one font I ended up with 
something like a 3-pixel high minibuffer.

Remember that GNUstep also has multiple graphics backends with different 
font behaviours, I used the cairo backend which reputedly has slightly 
poorer font rendering than art, but OTOH worked.

Remember to try with "openapp Emacs -Q", because your ~/.emacs (which 
gnustep will see) might be setting a problematic font, mine initially was.

It sometimes makes "interesting" font choices itself, I don't know where 
it found some sort of comic-sans alike on my system but it did.

5. Non-latin chars.

Doesn't seem to do well here at all.

6. keyboard modifier mapping

One thing that helped a lot was to reconfigure the gnustep-level 
keyboard modifier mapping so that the keys in ns emacs ultimately wound 
up similar to x11 emacs with its out-of-box defaults.

http://www.gnustep.org/resources/documentation/Developer/Back/General/DefaultsSummary.html

I used (with Help on Super_R because I wanted to see what it did, turns 
out ns emacs treats it as Hyper...):

NSGlobalDomain GSFirstControlKey Control_L
NSGlobalDomain GSSecondControlKey Control_R

NSGlobalDomain GSFirstAlternateKey Alt_L
NSGlobalDomain GSSecondAlternateKey NoSymbol

NSGlobalDomain GSFirstCommandKey Super_L
NSGlobalDomain GSSecondCommandKey NoSymbol

NSGlobalDomain GSFirstHelpKey Help
NSGlobalDomain GSSecondHelpKey Super_R


7. [new since I passed this to Stefan]. No timers/idle???

Timers and idle stuff mostly not running, I think. Emacs processes stuff 
when there's input i.e. wiggle the mouse to make stuff happen ?!




  parent reply	other threads:[~2011-04-27 19:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-27  0:39 Emacs with Cocoa/GNUstep Germán Arias
2011-04-27  1:19 ` David Reitter
2011-04-27  3:56 ` CHENG Gao
2011-04-27  4:38   ` Germán Arias
2011-04-27  4:56     ` CHENG Gao
2011-04-27  6:13     ` Paul Eggert
2011-04-27 23:54       ` Germán Arias
2011-04-27  4:15 ` Pascal J. Bourguignon
2011-04-27 19:13 ` David De La Harpe Golden [this message]
2011-04-28  0:24   ` Germán Arias
2011-04-28 15:30     ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DB86AEF.7060809@harpegolden.net \
    --to=david@harpegolden.net \
    --cc=emacs-devel@gnu.org \
    --cc=german@xelalug.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).