Subject: Re: 23.1; term/ns-win.el does "too much", assumes wrong run order

From: Adrian Robert <[email-masked]>
Date: Fri, 18 Sep 2009 19:09:43 -0400

Hello,

Thanks for this report.

> (define-key global-map [home] 'beginning-of-buffer)
> (define-key global-map [end] 'end-of-buffer)
> (define-key global-map [kp-home] 'beginning-of-buffer)
> (define-key global-map [kp-end] 'end-of-buffer)
>
> which does change the behavior of the keys to a behavior common on a
> popular modern nextstep-derived system, but with the addendum that  
> it's
> just as common for individual applications to treat those keys in the
> fashion emacs treats them on other platforms.

Can you be more specific?  Are you talking about Home/End = beginning/ 
end of line?  Which other  applications on a "popular modern nextstep- 
derived system" are doing this?  I haven't found any, whereas  
browsers, Terminal, iWork at least go to beginning/end of document.   
But perhaps we should make this change anyway to accomodate those  
coming from a Windows background.

> ;;; Allow shift-clicks to work similarly to under Nextstep
> (define-key global-map [S-mouse-1] 'mouse-save-then-kill)
> (global-unset-key [S-down-mouse-1])
>
> which provides a very surprising behavior that is unlike any modern
> computer that runs something "nextstep derived"

While the name sounds odd, the primary behavior is to create/extend  
the selection, which is common with other apps.  This IS different  
from putting up a font menu on other platforms, but this is a tough  
call since the font panel is accessible via the tools menu and Cmd-t  
already, and the shift-extend-selection behavior is one of the  
oldest / most basic / most common gestures in non-X11 environments.

Regarding ns-power-off, there is some confusion about these bindings;  
they are strictly internally used for passing information between the  
C and lisp levels and don't relate to the power button on some  
keyboards, or to events passed by the OS itself.

The daemon situation IS problematic.  At least the aliases can be  
worked around by using the ns- equivalents.  You can put code  
in .emacs conditional on windowing-system = 'ns or 'mac (or emacs- 
major-version 22/23) to use under multiple emacsen.