emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Carbon: resizing a frame on wrong "space"


From: YAMAMOTO Mitsuharu
Subject: Re: Carbon: resizing a frame on wrong "space"
Date: Fri, 27 Mar 2009 09:28:32 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shij┼Ź) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Mon, 26 Jan 2009 13:48:19 +0900, YAMAMOTO Mitsuharu <address@hidden> 
>>>>> said:

>>>> YAMAMOTO Mitsuharu <address@hidden> writes:
>>>>> FYI, it does not happen with the Carbon+AppKit port.

>>>> I have seen you mentioned this port several times, but never find
>>>> it through google. Seems not in CVS repo either? So where can I
>>>> get it?

>>> Now it is publicly available from

>>> ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-22.3-appkit-1.0.tar.gz

The third update of the Carbon+AppKit port is now available from

    ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-22.3-appkit-1.3.tar.gz

Below is the list of changes:

** Fixed bugs

*** Popup dialog button labels may get corrupted.
http://lists.gnu.org/archive/html/emacs-devel/2009-03/msg00261.html

*** Popup dialog does not select the default item with the return key.

*** Tooltip contents are sometimes not shown on 10.4 due to the
previous change for flyspell-small-region slowness.

** Improvements

*** Hourglass (progress indicator) is shown in the title bar.

*** Add f20 and kp-separator to the keycode-to-xkeysym table.


This time, README is slightly expanded as follows:

1. What's this?

This is "Carbon+AppKit port" addition to GNU Emacs 22.3.

The Carbon+AppKit port of GNU Emacs 22.3 is a port of the Carbon port
(aka "Carbon Emacs", don't confuse it with "Carbon Emacs Package")
that is a part of the official GNU Emacs 22 distribution and provides
native GUI support for Mac OS.  The two ports differ in the GUI
implementation basis: the Carbon port uses Carbon HIToolbox, but the
Carbon+AppKit port uses the Cocoa Application Kit framework (AppKit).

The Carbon+AppKit port inherits the code of the non-GUI part of the
Carbon port, such as drawing, font and image handling.  So in this
sense, the Carbon+AppKit port can be regarded as a variant of the
Carbon port.  Obviously, this is not a backport of the Cocoa/GNUstep
port (aka "Emacs.app").

The Carbon+AppKit port shares mostly the same features with the Carbon
port including the following:

  * C-g handling
    You can quit (while t) and (shell-command "sleep 100").
    No bogus menu bar activation while these evaluations.

  * Emulation of `select' without periodic polling
    It doesn't use CPU time while the Lisp interpreter is idle and
    waiting for some events to come, even with subprocesses or network
    connections.

  * Graceful termination
    If you try logout/shutdown/reboot while leaving a file-visiting
    buffer modified and unsaved, a popup window appears for
    confirmation.  If you cancel the termination of Emacs (including
    C-g or ESC), the whole logout/shutdown/reboot process is also
    canceled immediately (i.e., you will see a "canceled" dialog
    immediately rather than a "timed out" one afterward).  If you
    don't have unsaved buffers, shell buffers, etc., you won't see
    unnecessary confirmation.

  * Apple Event handling
    One can define Apple Event handlers at the Lisp level.  Actually,
    graceful termination above is an instance of Lisp-level Apple
    Event handling.  Another example is "Get URL" handler that enables
    us to invoke the mailer you customized with `mail-user-agent',
    e.g.,

      $ osascript -e 'tell application "Emacs"
                      to open location "mailto:address@hidden";'

    If you set Emacs as the default mailer via Mail.app preference,
    the Emacs mailer will set up a draft buffer when you click a
    mailto: link in a Web browser.

  * DictionaryService support (10.4 and later)
    You can look up a word under the mouse pointer in the selected
    window by typing Command-Control-D.

Basically, the Carbon+AppKit port doesn't add new features per se,
except for the following two aspects:

  * Resolution independence (10.4 and later, 10.5 recommended)
    Scaling works in Framework-Scaled Mode as opposed to (blurry)
    Magnified Mode for the Carbon port.  You may want to disable
    QuickDraw Text, which is incompatible with Framework-Scaled Mode,
    by adding "-DUSE_QUICKDRAW=0" to CFLAGS on compilation.

  * 64-bit (10.5, MAY CRASH, see below)
    You can build and run a 64-bit binary with GUI support by
    specifying CC='gcc -m64' on configure.
    !! Caution !! The resulting binary will crash when you try to
    display particular characters such as combining diacritics.  This
    is due to a bug in 64-bit ATSUI.  Apple says it won't be fixed but
    maybe you can vote for the fix of this bug
    (rdar://problem/5578675) at the Apple Bug Reporter.

Although they are minor, some visual enhancements can be found in the
Carbon+AppKit port:

  * Aligned key bindings in menus

  * Progress indicator (corresponding to hourglass) in the title bar

  * Unusable items in the font panel are hidden
    Try Options -> Show/Hide -> Font Panel from the menu bar or
    M-x mac-font-panel-mode RET.

  * Update display while the resize control (or the slider in the font
    panel) is being dragged


2. Build instruction

  a. Untar the official GNU Emacs 22.3 distribution tarball.  Let
     EMACS_SOURCE_TOP be the top directory of the source tree.

  b. Apply the patch `patch-carbon+appkit' to the source tree.

  c. Copy `lisp/term/mac-win.elc' to
     `EMACS_SOURCE_TOP/lisp/term/mac-win.elc' by overriding the
     latter.  (Alternatively, you can bytecompile
     `EMACS_SOURCE_TOP/lisp/term/mac-win.el' that was patched in the
     previous step.)

  d. Copy `src/macappkit.h' and `src/macappkit.m' to
     `EMACS_SOURCE_TOP/src'.

  e. Build as usual with adding "--with-appkit" as a configure option.

Enjoy,

                                     YAMAMOTO Mitsuharu
                                address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]