view etc/emacstool.1 @ 59146:9bde7721ad0f

* dispextern.h: Change HAVE_CARBON to MAC_OS. (struct glyph_string): Likewise. * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of mac_initialize. * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name): Change TARGET_API_MAC_CARBON to HAVE_CARBON. * fns.c (vector): Change MAC_OSX to MAC_OS. * frame.c (x_set_frame_parameters, x_report_frame_params) (x_set_fullscreen): Remove #ifndef HAVE_CARBON. (x_set_border_width, Vdefault_frame_scroll_bars): Change HAVE_CARBON to MAC_OS. * image.c [MAC_OS]: Include sys/stat.h. [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and QuickTimeComponents.h. * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. [!MAC_OSX] (select): Use mac_wait_next_event. [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes. [!MAC_OSX] (select, run_mac_command): Change `#ifdef TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. (mac_clear_font_name_table): Add extern. (Fmac_clear_font_name_table): New defun. (syms_of_mac): Defsubr it. [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define. [MAC_OSX] (select_and_poll_event): New function. [MAC_OSX] (sys_select): Use it. [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function. [MAC_OSX && SELECT_USE_CFSOCKET] (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines. [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and RunLoop for simultaneously monitoring two kinds of inputs, window events and process outputs, without periodically polling. * macfns.c (mac_initialized): Remove extern. (stricmp): Put in #if 0. All callers changed to use xstricmp in xfaces.c. (strnicmp): Decrement `n' at the end of each loop, not the beginning. (check_mac): Use the term "Mac native windows" instead of "Mac OS". (check_x_display_info, x_display_info_for_name): Sync with xfns.c. (mac_get_rdb_resource): New function (from w32reg.c). (x_get_string_resource): Use it. (install_window_handler): Add extern. (mac_window): New function. (Fx_create_frame): Use it instead of make_mac_frame. Set parameter for Qfullscreen. Call x_wm_set_size_hint. (Fx_open_connection, Fx_close_connection): New defuns. (syms_of_macfns): Defsubr them. (x_create_tip_frame) [TARGET_API_MAC_CARBON]: Add kWindowNoUpdatesAttribute to the window attribute. (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. (x_create_tip_frame): Don't call ShowWindow. (Fx_show_tip): Call ShowWindow. (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. (mac_frame_parm_handlers): Set handlers for Qfullscreen. (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. * macgui.h [!MAC_OSX]: Don't include Controls.h. Include Windows.h. (Window): Typedef to WindowPtr and move outside `#if TARGET_API_MAC_CARBON'. (XSizeHints): New struct. * macterm.c (x_update_begin, x_update_end) [TARGET_API_MAC_CARBON]: Disable screen updates during update of a frame. (x_draw_glyph_string_background, x_draw_glyph_string_foreground) [MAC_OS8]: Use XDrawImageString/XDrawImageString16. (construct_mouse_click): Put in #if 0. (x_check_fullscreen, x_check_fullscreen_move): Remove decls. (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. (activate_scroll_bars, deactivate_scroll_bars) [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl. (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window if the position is neither user-specified nor program-specified. (x_free_frame_resources): Free size_hints. (x_wm_set_size_hint): Allocate size_hints if needed. Set size_hints. (mac_clear_font_name_table): New function. (mac_do_list_fonts): Initialize font_name_table if needed. (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT around mac_do_list_fonts. (mac_unload_font): New function. (x_load_font): Add BLOCK_INPUT around XLoadQueryFont. (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations and definitions with #if TARGET_API_MAC_CARBON. [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl. (install_window_handler): Add decl. (do_window_update): Add BeginUpdate/EndUpdate for the tooltip window. Use UpdateControls. Get the rectangle that should be updated and restrict the target of expose_frame to it. (do_grow_window): Set minimum height/width according to size_hints. (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. (do_zoom_window): Don't use x_set_window_size. [USE_CARBON_EVENTS] (mac_handle_window_event): New function. (install_window_handler): New function. [!USE_CARBON_EVENTS] (mouse_region): New variable. [!USE_CARBON_EVENTS] (mac_wait_next_event): New function. (XTread_socket) [USE_CARBON_EVENTS]: Move call to GetEventDispatcherTarget inside BLOCK_INPUT. (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. Update mouse_region when mouse is moved. (make_mac_frame): Remove. (make_mac_terminal_frame): Put in #ifdef MAC_OS8. Initialize mouse pointer shapes. Change values of f->left_pos and f->top_pos. Don't use make_mac_frame. Use NewCWindow. Don't call ShowWindow. (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from Vinvocation_name and Vsystem_name. (mac_make_rdb): New function (from w32term.c). (mac_term_init): Use it. Add BLOCK_INPUT. Error if display has already been opened. Don't pass argument to mac_initialize_display_info. Don't set dpyinfo->height/width. Add entries to x_display_list and x_display_name_list. (x_delete_display): New function. (mac_initialize): Don't call mac_initialize_display_info. (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide. * macterm.h (check_mac): Add extern. (struct mac_output): New member size_hints. (FRAME_SIZE_HINTS): New macro. (mac_unload_font): Add extern. * xdisp.c (expose_window, expose_frame): Remove kludges for Mac. * xfaces.c (clear_font_table) [MAC_OS]: call mac_unload_font.
author Steven Tamm <steventamm@mac.com>
date Mon, 27 Dec 2004 17:27:30 +0000
parents 695cf19ef79e
children f05a048483cc 375f2633d815
line wrap: on
line source

.TH EMACSTOOL 1
.SH NAME
.I emacstool 
\- run emacs under Sun windows with function-key and mouse support.
.SH SYNOPSIS
.I emacstool
[{window_args} {-rc run_command_path} args ... ]
.SH TYPICAL USAGE
In ~/.suntools or ~/.rootmenu include a line like this:
.br
"Emacstool"     emacstool -WI emacs.icon -f emacstool-init
.SH DESCRIPTION
.B  Emacstool
creates a SunView frame and a tty subwindow within which mouse events
and function keys are translated to ASCII sequences which Emacs can
parse.  The translated input events are sent to the process running in
the tty subwindow, which is typically GNU Emacs.  Emacstool thereby
allows GNU Emacs users to make full use of the mouse and function keys.
GNU Emacs can be loaded with functions to interpret the mouse and
function-key events to make a truly fine screen oriented editor for
the Sun Workstation.
.PP
(Note that GNU Emacs has a special interface to the X window system as
well.  The X window system has many technical advantages, it is an
industry standard, and it is also free software.  The Free Software
Foundation urges you to try X windows, and distributes a free copy of
X on Emacs distribution tapes.)
.PP
Function keys are translated to a sequence of the form
`^X*[a-o][lrt]'.  The last character is `l', `r', or `t' corresponding
to whether the key is among the Left, Right, or Top function keys.
The third character indicates which button of the group
was pressed.  Thus, the function key in the lower right corner will
transmit the sequence `^X*or'.  In addition, the [lrt] is affected by
the Control, Meta, and Shift keys.  Unshifted Control keys will be
non-alphabetic: C-l is [,], C-r is [2], C-t is [4].
.PP 
Mouse buttons are encoded as `^X^@([124] x y)\\n'.  ^X^@ is the
standard GNU Emacs mouse event prefix, it is followed by a list
indicating the button pressed and the character row and column of the
point in the window where the mouse cursor is, and followed by a
newline character.  In GNU Emacs, the ^X^@ dispatches to a
mouse event handler which then reads the following list.
.SH OPTIONS
.B Emacstool
supports all the standard window arguments, including font and icon 
specifiers.  
.PP
By default, Emacstool runs the program 
.I emacs
in the created subwindow.  
The value of the environment variable 
.I EMACSTOOL
can be used to override this if your version of 
.B Emacs
is not accessible on your search path by the name 
.I Emacs.
In addition, the run command can be set by the 
.I pathname 
following the last occurrence of the
.I \-rc
flag.
This is convenient for using Emacstool to run on remote machines.
.PP
All other command line arguments not used by the window system are passed
as arguments to the program that runs in the Emacstool window.
.PP
For example: 
.PP
local% (emacstool -rc rlogin remote -8 &)&
.PP
will create an Emacstool window logged in to a machine named
.I remote.
If Emacs is run from this window, 
Emacstool will encode mouse and function keys, and send them to rlogin.
If Emacs is run from this shell on the remote machine, it will see
the mouse and function keys properly.
However, since the remote host does not have access to the screen,
the cursor cannot be changed, menus will not appear, and the selection
buffer (STUFF) is limited.
.SH Using With GNU Emacs:
The GNU Emacs files
lisp/term/sun.el,
lisp/sun-mouse.el, 
lisp/sun-fns.el, 
and 
src/sunfns.c
provide emacs support for the Emacstool and function keys.
Emacstool will automatically set the TERM environment variable to be "sun"
and unset the environment variable TERMCAP.  That is, these variables will
not be inherited from the shell that starts Emacstool.
Since the terminal type is
.I SUN
(that is, the environment variable TERM is set to 
.I SUN), 
Emacs will automatically load the file lisp/term/sun.
This, in turn, will ensure that sun-mouse.el is autoloaded when any mouse
events are detected.  It is suggested that 
.I sun-mouse 
and
.I sun-fns
be loaded in your site-init.el file, so that they will always be loaded
when running on a Sun workstation.
.PP
In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t".
Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL")
to determine whether to do Emacstool specific initialization.
Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL")
is defined.
.PP
The file src/sunfns.c defines several useful functions for emacs on
the Sun.  Among these are procedures to pop-up SunView 
.I menus, 
put and get from the SunView
.I STUFF
buffer, and a procedure for changing the cursor 
.I icon.
If you want to define or edit cursor icons, 
there is a rudimentary mouse driven icon editor in the file
lisp/sun-cursors.el.  Try invoking (sc:edit-cursor)
.SH BUGS
It takes a few milliseconds to create a menu before it pops up.
.SH ENVIRONMENT VARIABLES
EMACSTOOL
IN_EMACSTOOL
TERM
TERMCAP
.SH FILES
.DT
emacs
.SH "SEE ALSO"
emacs(1)
 .../etc/SUN-SUPPORT
 .../lisp/term/sun.el
.SH COPYING
Copyright 
.if t \(co
.if n (c)
2001 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of
this document under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of
a permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.

.\" arch-tag: a1f44815-5163-4026-89c1-4404e4b81d37