===============================================================================
GNU Emacs 20.6 for OS/2                                         1-Nov-2000
===============================================================================

Introduction
============

This is GNU Emacs 20.6 for emx on OS/2.  The original port was done by
Eberhard Mattes based on ideas of the port of GNU Emacs for OS/2 done
by J”rg Viola.

This port was done by Jeremy Bowen and is built upon the earlier
version v19.33 (by EM) and on version 20.3 (also by JB)

GNU Emacs is free software.  See \emacs\20.6\etc\COPYING for details.


Distribution files
==================

The `GNU Emacs 20.6 for emx' distribution consists of the following
files:

  README.OS2            this file (/emacs/20.6/README.OS2)
  e206el1.zip           Emacs Lisp files (source), part 1
  e206elc.zip           Emacs Lisp files (source), part 2
  e206base.zip          Executables and some documentation.
  e206rest.zip          Everything else

The `206' in `e206*.zip' is the version number, v20.6  



GNU Emacs 20.6 for OS/2 requires emx 0.9d or later -- if you have an
older version of emx.dll, emxbind.exe, and termcap.dat, get emxrt.zip
from

  hobbes.nmsu.edu:     /pub/os2/dev/emx/v0.9d



Installing GNU Emacs
====================

This section describes how to install the compiled version of GNU
Emacs 20.6 for emx on OS/2.

GNU Emacs is installed in the \emacs directory of an HPFS drive.

1.  Get lots of disk space on an HPFS partition.  As this version of
    GNU Emacs doesn't bother about 8.3 file names, you can't install
    it on a FAT partition.  However, you can edit files on FAT partitions.

2.  Set appropriate environment variables (set them in config.sys):

      SHELL          name of the command processor, defaults to
                     /bin/sh.  If you have a Unix-like shell (such as
                     bash or the Data Logic shell), you should use the
                     pathname of that shell.  Otherwise, use the path
                     name of cmd.exe

      SYSTEMNAME     initializes system-name, the name of the
                     machine.  The default value is "my-system"

      HOME           the pathname of your home directory, replaces ~
                     in pathnames.  Emacs tries to load .emacs, for
                     instance, from that directory

      TMP            directory for temporary files.  The default is
                     the current working directory

      TMPDIR         another directory for temporary files.  The ediff
                     packages uses this; the directory must be on an
                     HPFS drive for ediff

    Example (Emacs will be installed on drive E):

      SET PATH=E:\OS2;[...];E:\EMACS\20.6\BIN
      SET SHELL=E:/bin/ksh.exe
      SET SYSTEMNAME=orac
      SET HOME=E:/home
      SET TMP=E:/temp
      SET TMPDIR=E:/temp

    Note that EMACSLOADPATH, EMACSDATA, EMACSPATH, and INFOPATH are no
    longer required -- please delete them unless you want to override
    or supplement the default directories, or put emacs.exe into a
    directory not related to the Emacs directory hierarchy.  The
    default directories are now relative to the directory from which
    emacs.exe is run.

3.  Reboot your computer to activate the new config.sys settings.

4.  To install GNU Emacs, change to the target drive (which should be
    formatted with HPFS) and unpack the file e206*.zip by typing

      cd \
      unzip e206*

    Note that you cannot use PKUNZIP to unpack the ZIP files.

5.  Create the Emacs executable for GNU Emacs by typing

      cd \emacs\20.6\bin
      dump

    Note: If you are installing GNU Emacs on a HPFS drive, ensure that
    the EMXOPT environment variable does not contain `-t'.  Otherwise,
    Emacs won't find some of its files.

    Required disk space: 14 MByte. In case you are short of disk
    space, you can delete the files \emacs\20.6\bin\temacs and
    \emacs\20.6\etc\DOC now.  If you want to dump Emacs again,
    restore these files from e206base.zip.

6.  Now you can run GNU Emacs by typing

      emacs                   (run Emacs in text mode)
      emacs -pm               (run Emacs in PM mode)


7.  You might want to add program objects for the program

      E:\emacs\20.6\bin\emacs.exe




Customizing GNU Emacs
=====================

You should customize \emacs\20.6\lisp\site-start.el, the startup file
of GNU Emacs.  The statements in that file are executed automatically
each time GNU Emacs is started.  Moreover, you can put personal
settings into a file named ".emacs" in your home directory (set by
the HOME environment variable).

Sample site-start.el file (simplified by hiding X support):

---------------------------------------------------------------------
(set-input-mode nil nil 1)                            ; [1]

(setq ange-ftp-disable-netrc-security-check t)        ; [2]

(setq default-frame-alist                             ; [3]
      (append '((altgr-modifier . meta)
                (shortcuts . (alt-f4))
                (menu-font . "8.Helv"))
              default-frame-alist))

(standard-display-8bit 128 254)                       ; [4]

(set-display-table-slot standard-display-table 'truncation      16)  ; [5]
(set-display-table-slot standard-display-table 'wrap            31)
(set-display-table-slot standard-display-table 'control         24)
(set-display-table-slot standard-display-table 'vertical-border 186)

(add-hook 'server-request-hook                        ; [6]
          '(lambda ()
             (make-frame-visible)
             (focus-frame (selected-frame))))

(autoload 'os2help "os2help" "OS/2 on-line help" t)   ; [7]
(setq os2help "/emx/book/emxdoc.ndx")
(global-set-key [C-f1] 'os2help)

(if (eq window-system 'pm)
    (progn
      (pm-edit-menu)                                  ; [8]
      (pm-files-menu)                                 ; [9]
      ;;(remove-from-window-list)                     ; [10]
      (pm-session-bond t)                             ; [11]
      (set-face-background 'modeline "red")           ; [12]
      (set-face-foreground 'modeline "yellow")
      (make-face 'info-node)                          ; [13]
      (copy-face 'bold 'info-node)))
---------------------------------------------------------------------

Notes:

[1]   Enable 8-bit input.  set-input-mode must be called when running
      Emacs -- calling it before dumping doesn't work

[2]   Prevent angep-ftp from complainining about bad protection of the
      "~/.netrc" file -- under OS/2, "~/.netrc" is always world-readable

[3]   Use the right ALT key of non-US keyboards as META key.  This
      does not work for all key combinations.  Note that the right ALT
      key of US keyboards is equivalent to the left ALT key.

      Enable the Alt+F4 shortcut key for closing the frame.

      Use a small font for menus.

      Add new parameters to the front of the list!

[4]   Display characters 128 through 254 as-is.  Without this
      statement, octal notation is used for these characters

[5]   Use special symbols (which are not displayed as-is when
      occurring in a buffer) for truncated screen lines, continued
      lines, for displaying control characters, and for separating
      side-by-side windows

[6]   Raise frame to the foreground if emacsclient requests a buffer

[7]   Use C-f1 to invoke OS/2 on-line help.  You have to set the
      os2help variable to point to an EPM index file.  See os2help.el
      for details

[8]   Modify the Edit menu of the menu bar to use the OS/2 clipboard
      for Cut, Copy, and Paste

[9]   Modify the Files menu of the menu bar to use OS/2's standard file
      dialog for `Open File...' and `Save Buffer As...'

[10]  Remove emacs.exe from the Window List.  See below for a
      discussion of advantages and disadvantages.  In the default
      site-start.el file, this statement is disabled.  You might want
      to uncomment this statement if you use the PM interface and
      don't run Emacs manually.  If you enable
      remove-from-window-list, you should disable pm-session-bond

[11]  Establish a bond between emacs.exe (the VIO window) and
      pmemacs.exe (the PM windows).  If you select emacs.exe, for
      instance by using the Window List, one of the PM windows will be
      selected instead of emacs.exe

[12]  Make the mode line yellow on red

[13]  Don't use an italic font for info nodes


About file names
================

As the syntax of OS/2 file names differs from the syntax of Unix file
names, there are some things to keep in mind when using file names.


Drive letters
-------------

Drive letters are attached to nearly all file names.  That causes
problems with Emacs Lisp packages assuming that only file names
starting with / or ~ are absolute file names.  Emacs tries to avoid
attaching drive letters for remote files handled by ange-ftp, assuming
that the ftp server runs on a Unix machine.


Letter case
-----------

All file names are translated to lower case (unless the
`case-fold-file-names' variable is set to `nil').  This is required as
GNU Emacs thinks that non-equality of file names implies non-identity
of files.  Under OS/2 and DOS, however, letter case does not matter in
file names.

If you want to edit files on a case-sensitive file-system such as NFS,
set `case-fold-file-names' to `nil'.  However, that feature has not
been tested.  If `case-fold-file-names' is `nil', do not attempt to
visit a file twice using two file names differing only in letter case!

If you want to keep the letter case in file names on HPFS, see
`Choosing the backup type'.  Alternatively, you can try setting
`case-fold-file-names' to `preserve':

  (setq case-fold-file-names 'preserve)

With this setting, `expand-file-name' will store the original case of
each character of a file name in text properties of the string
returned (the string proper will still be all-lower-case).  When
creating, copying, or renaming a file, Emacs will use those text
properties to reconstruct the original spelling of the file name.
This feature is quite experimental.  There is a known disadvantage of
setting `case-fold-file-names' to `preserve': file names displayed by
`repeat-complex-command' (C-x ESC ESC, C-.)  will be quite illegible
as it shows all the text properties.


Forward slashes vs. backward slashes
------------------------------------

Better use forward slashes (/) instead of backslashes (\) in path
names as some places where Emacs checks for / might have slipped my
attention.


Trailing dots
-------------

Emacs doesn't know that trailing dots in file names are ignored by
OS/2.  It believes that "foo" and "foo." are different files, a belief
it probably shares with quite a few OS/2 users.


Long file names
---------------

If you are using Novell Netware volumes which don't support long file
names, you have to set the `force-fat-regexp' variable to make
auto-saving and backup files work on such volumes.  The value of
`force-fat-regexp' should be a regular expression matching path names
on such volumes.  Letter case is ignored.  Example:

  (setq force-fat-regexp "^[xyz]:")

This example turns off long file names for drives X, Y and Z.  If you
are using UNC paths to volumes which don't support long file names,
you should set `force-fat-regexp' such that these UNC paths are also
matched.  Example:

  (setq force-fat-regexp "^[xyz]:\\|^//server/vol1")


Choosing a PM font
==================

A font is specified by size (printer's points), simulated appearance
(bold or italic, optional) and name:

  SIZE[.bold][.italic].NAME

Alternatively, you can use the `Host Portable Character
Representation' for font names, for instance

  -*-Courier-medium-r-normal--*-100-*-*-m-*-cp850

Examples of fixed-spaced bitmap fonts:

  8.Courier
  10.Courier
  10.System Monospaced
  12.bold.Courier                 (Simulated bold font)
  12.Courier Bold                 (Real bold font)
  8.System VIO                    (OS/2 2.1 and later)
  6.Small                         (see below)

As the plain, bold, and italic variations of the PM fonts have
different character widths, mixing fonts in a frame isn't a good
idea.  The character widths of all fonts are forced to the character
width of the default font.  When defining a face with a font which is
wider than the default font, there will be problems: some characters
will be displayed only partially and characters may overlap.  Fonts
which are smaller than the default font, however, can be used without
problems.  For instance, you can use "8.bold.System Monospaced" as
bold font when using "10.Courier" as default font ("10.bold.Courier"
is too wide).  Using italic fonts is not recommended.

Simulated italic fonts are much slower than real italic fonts.  Only
"12.Courier Italic" and "12.Courier Bold Italic" are real italic
fixed-width bitmap fonts.


Using outline fonts (such as "9.Courier") is not recommended because
that's too slow.  Proportional fonts (such as "10.Tms Rmn") cannot be
used.

To set the default font of a frame, set the `font' frame parameter.
Example:

  (setq default-frame-alist
        (append '((font . "8.Courier")) default-frame-alist))

If the font does not exist, "10.Courier" is used instead as default
font.  If you use the `Host Portable Character Representation' for the
name of the default font, Emacs automatically chooses (simulated) bold
and italic variants of that font.  Example:

  emacs -pm -fn -*-Courier-medium-r-normal--*-100-*-*-m-*-cp850

You can use a popup menu to select the default font: Click mouse
button 1 (that's the left mouse button, by default) while depressing
the SHIFT key (S-down-mouse-1).  The menu contains all fixed-width
bitmap fonts of OS/2 2.1 (and later), plus "6.Small".

To change the font of a face, use set-face-font.  However, you can use
only fonts reported by the pm-list-fonts function.  Examples:

  (set-face-font 'bold "10.bold.Courier")
  (set-face-font 'italic "10.italic.Courier")  ; NOT RECOMMENDED!

To set the font for menus, set the `menu-font' frame parameter.  Only
SIZE.NAME format is allowed for the value of the `menu-font' frame
parameter.  Example:

  (setq default-frame-alist
        (append '((menu-font . "8.Helv")) default-frame-alist))

If the font does not exist, the system default is used.


The keyboard
============

In text mode, the ALT keys generate the A- modifier (alt).  Load
emx-meta.el to use the ALT keys to generate the M- modifier (meta):
Put

  (load "emx-meta.el")

into your .emacs or site-start.el file.  This works only for a subset
of the keys.  It does not work with the CTRL key.

The rest of this section applies to PM mode.

The modifiers generated by the ALT keys are configurable.  There are
two ALT keys, the left ALT key and the right ALT key.  The right ALT
key is called AltGr or AltCar on most non-US keyboards.  On these
keyboards, the right ALT key is used for entering special symbols.  On
the US keyboard, the right ALT key is equivalent to the left ALT key.

We'll use the term `ALT key' for both ALT keys of the US keyboard.
For keyboards which have an AltGr or AltCar key, we'll call the left
ALT key `ALT key' and the right ALT key `ALTGR key'.

The modifier for the ALT key (both ALT keys on the US keyboard, that
is) is set with the `alt-modifier' frame parameter.  For instance, use
the following code to use the ALT key for generating the A- (alt) modifier:

  (setq default-frame-alist
        (append '((alt-modifier . alt)) default-frame-alist))

By default, the ALT key is used for generating the M- (meta)
modifier.

The modifier for the ALTGR key (which isn't present on the US
keyboard) is set with the `altgr-modifier' frame parameter.  For
instance, use the following code to use the ALTGR key for generating
the A- (alt) modifier:

  (setq default-frame-alist
        (append '((altgr-modifier . alt)) default-frame-alist))

As ALTGR is treated specially by the operating system, you cannot use
it with arbitrary keys.  Usually you can use it together with a subset
of the letter and digit keys to generate the modifier set with
altgr-modifier.  If the CTRL key is down, ALTGR is ignored for most
keys.

Suppose that '((alt-modifier . meta) (altgr-modifier . hyper)) is in
effect.  Then, you'll get the following table of keys vs. events:

  Left ALT ³ Right ALT ³ CTRL ³ Key ³³ US keyboard ³ German keyboard
  ÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÅÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
     X     ³     -     ³  -   ³  a  ³³   M-a       ³   M-a
     X     ³     -     ³  X   ³  a  ³³   M-C-a     ³   M-C-a
     -     ³     X     ³  -   ³  a  ³³   M-a       ³   H-a
     -     ³     X     ³  X   ³  a  ³³   M-C-a     ³   C-a
     -     ³     X     ³  -   ³  f2 ³³   M-f2      ³   f2
     -     ³     X     ³  -   ³  q  ³³   M-q       ³   @
     -     ³     X     ³  -   ³  q  ³³   M-C-q     ³   C-@

The locations of the keys C-[ C-] C-\ etc. on non-US keyboards depend
on whether you are using the PM version or the text mode version of
Emacs: With the PM version, you can type those keys with
CTRL+ALTGR+<whatever> (example: C-] is on CTRL+ALTGR+<9> of the German
keyboard), where ALTGR is the right ALT key.  With the text mode
version, pretend that you have a US keyboard (example: C-] is on
CTRL+<+> of the German keyboard).

If you want to bind keys depending on the keyboard layout, use the
keyboard-type function.


Changing the window size
========================

To change the window size in text mode, type

    mode co80,x

where x is the number of lines.  Example: mode co80,40

To change the window size in PM mode, simply resize the window using
the mouse or the keyboard (Alt+F8).  You can set the default size with
the `width' and `height' frame parameters in site-init.el or .emacs:

  (setq default-frame-alist
        (append '((width . 80) (height . 40))
                default-frame-alist))

You can set the default position with the `top' and `left' frame
parameters.  See the documentation of set-frame-position for details.


Choosing the backup type
========================

You might want to use

  (setq backup-by-copying t)

This has two advantages under OS/2:

-  the letter case of the name of the file is retained (normally, GNU
   Emacs for emx uses lower-case file names unless the variable
   `case-fold-file-names' is set to `nil').  Letter case is also
   retained if `case-fold-file-names' is set to `preserve'
   (experimental feature).

-  when editing .CMD files, the Workplace Shell does not change
   program objects to point to the backup of the edited file

There is one known disadvantage under OS/2:

-  the letter case of the file name is lost for the backup file (if
   `case-fold-file-names' is `t')

If `case-fold-file-names' is `t', you can choose by setting
`backup-by-copying': Either keep the letter case of the file name of
the new file or of the backup file.


Text mode vs. binary mode
=========================

This port of GNU Emacs supports two types of files: binary files and
text files.  As GNU Emacs is a text editor, you'll work with text
files most of the time.  Therefore, you don't have to know the ugly
details unless you want to edit a binary file.

When reading a text file, each CR/LF pair is converted to a LF.  If
the last character of the file is a Ctrl-Z, that character is
removed.

When writing a text file, each LF is replaced with a CR/LF pair.  A
Ctrl-Z is not appended as that has been obsolete for years.

No conversion is done when reading or writing a binary file.

The emx-add-binary-mode function is used to define an additional
regular expression for files which should be read and written in
binary mode.  Example:

  (emx-add-binary-mode "\\.exe$")
  (emx-add-binary-mode "\\.gz$")
  (emx-add-binary-mode "\\.[Zz]$")

This example will make Emacs use binary mode for file names ending
with .exe, .gz, .z or .Z.  Initially, binary mode is used for file
names matching the following regular expressions:

  \.elc$          \.arc$
  \.tar$          \.lzh$
  \.gz$           \.zip$
  \.[zZ]$         \.zoo$
  \.tgz$

You can use emx-remove-binary-mode to remove an entry from the list of
regular expressions for identifying binary files.  For instance,

  (emx-remove-binary-mode "\\.[Zz]$")

cancels

  (emx-add-binary-mode "\\.[Zz]$")

Note that the spelling of the regular expression must exactly match
the spelling of the regular expression to be removed.

The buffer-local variable emx-binary-mode controls whether to use text
mode or binary mode.  If the variable is nil (which is the initial
value), text mode is used.  If the variable is t, binary mode is used.

When inserting a binary file (i.e., a file whose name matches one of
the regular expressions defined by emx-add-binary-mode) into a buffer,
emx-binary-mode is set to t.  The value of emx-binary-mode of that
buffer will stay t until changed.  This also applies to visiting a
file.  In other words, a buffer is switched to binary mode when
visiting or inserting a binary file.  A file is read in binary mode if
the target buffer is in binary mode or if the file is a binary file.

When writing a file (e.g., by saving the buffer or by calling
write-region), binary mode is used if the source buffer is in binary
mode or if the file is a binary file (i.e., the name matches one of
the regular expressions defined by emx-add-binary-mode).  The
emx-binary-mode variable of the buffer is set temporarily while
writing the file and reverts to the previous value after writing the
file.

To insert a text file into a buffer which is in binary mode, manually
set the emx-binary-mode variable to nil.

You can use find-file-binary to visit a file in binary mode.


Code pages
==========

cp850.el, which is loaded by default, defines a syntax table and a
case table for code page 850.

To enter accented characters which are not supported by your keyboard,
load cp850acc and invoke cp850-accents-mode.

Emacs uses the default code page for keyboard input and for display.
Use the current-code-page function to get the current code page.  The
list-code-pages function returns a list of available code pages.

Use the set-code-page command to set the code page for keyboard input
and for display.  Note that the process code page is not changed;
therefore set-code-page does not affect translation of file names and
the code page of child processes.  Moreover, the syntax tables and
case translation tables of Emacs are not affected by set-code-page.

In PM mode, there are additional code pages available, such as 1004
(Windows, more or less ISO 8859-1) and several EBCDIC code pages.
Better don't use the EBCDIC code pages, because Emacs talks ASCII.
All buffers, windows, and frames share the same code page.  Note that
the `cp850' part of font names is ignored; the current code page is
used for all fonts.


Scroll bars
===========

GNU Emacs for OS/2 now supports vertical scroll bars.  The scroll bar
code has been contributed by Patrick Nadeau (pnadeau@footprint.com).

The scroll bars work (nearly) like PM scroll bars.  All mouse buttons
generate a mouse-1 event, shift keys are ignored.

There is one important difference to PM scroll bars: The scroll bars
are `character oriented', not `line oriented'.  The position and size
of the slider is based on character counts, not on line counts: For
instance, the size of the slider depends on line lengths.

The scroll bars have a few known anomalies; please don't report these
as bugs.


Reading and posting news
========================

Type `M-x gnus RET' to start the Gnus newsreader.  See the on-line
documentation for details (`C-h i m gnus RET').


Removing the VIO window from the Window List
============================================

Call the remove-from-window-list function to remove the session in
which emacs.exe is running (a VIO window, usually) from the Window
List.  The advantage of this is having fewer entries in the Window List
-- it will be simpler to locate the PM windows of Emacs.

On the other hand, double-clicking on the Emacs icon will start
another instance of Emacs instead of bringing the current instance to
the foreground.

You should not call remove-from-window-list when running Emacs
manually (not by double-clicking on the Emacs icon) or when using
Emacs in text mode (without the -pm option).

If you created your Emacs icon using instemacs.cmd without the
`keepvio' option, calling remove-from-window-list is not necessary.
The Emacs icon starts emacs.exe in a PM session so that it doesn't
appear in the window list anyway.

Instead of calling remove-from-window-list, you might want to call
pm-session-bond with a non-nil argument (t, for instance) to establish
a bond between emacs.exe (the VIO window) and pmemacs.exe (the PM
windows).  If you select emacs.exe, for instance by double clicking
the Window List, one of the PM windows will be selected instead of
emacs.exe.  After establishing the bond, you can select emacs.exe by
clicking on the titlebar, by using the `Tile' or `Cascade' choice of
the Window List, or by using the `Restore' choice of the Minimized
Window Viewer.  You can break the bond by calling pm-session-bond with
a nil argument.

Note: By default, site-start.el calls pm-session-bond to establish a
bond between emacs.exe and pmemacs.exe.


More environment variables
==========================

The user-name variable is initialized from the value of the USER
environment variable.  If USER is not set, the LOGNAME environment
variable is used.  If both USER and LOGNAME are not set, user-name is
set to "unknown".

The user-full-name variable is initialized from the value of the
USERFULLNAME environment variable.  If USERFULLNAME is not set,
user-full-name is set to "unknown".



Miscellaneous hints
===================

-   For best results, run emacs.exe from the drive where it is
    installed -- you can change the drive in GNU Emacs.  If you run
    Emacs from a drive different from the drive where it is installed,
    you'll get the benign warning message

      Warning: lisp library (/emacs/20.6/lisp) does not exist.

    Ignore this message.

-   To change the cursor size in text mode, call set-cursor-size.
    Negative arguments are percentages:

      (set-cursor-size -80 -100)

    makes the cursor use the bottom 20% of the character cell.

-   The character `-' is not allowed in filenames on CDROM, `_' is
    used instead.  To let `load' automatically turn `-' into `_' and
    try again if a file is not found, set emx-cdrom-load to t.  When
    pre-installing Emacs on CDROM, it should be dumped with
    emx-cdrom-load set to t.

-   Don't put .el files into \emacs\20.6\lisp -- you'll have to move
    them when upgrading Emacs.  Instead, create a new directory, say

      \emacs\locallisp

    and add it to `load-path'.  This also applies to .info files.

-   In PM mode, you can drop files and colors on Emacs frames.


Additional features of GNU Emacs 20.6 for OS/2
==============================================

Additional functions (see on-line help for details):

  current-code-page
  emacs-priority
  emx-add-binary-mode
  emx-remove-binary-mode
  emx-original-file-name
  file-name-valid-p
  filesystem-type
  get-cursor-size
  get-ea
  get-ea-list
  get-ea-string
  keyboard-type
  list-code-pages
  pm-file-dialog
  pm-session-bond
  put-ea
  put-ea-list
  put-ea-string
  remove-ea
  remove-all-eas
  remove-from-window-list
  set-code-page
  set-cursor-size

Additional variables (see on-line help for details):

  binary-async-process-input
  binary-process-input
  binary-process-output
  case-fold-file-names
  emx-binary-mode
  emx-binary-mode-list
  emx-kill-tree
  emx-start-session
  emx-system-type
  min-skip-run
  pm-align-menu-key-descriptions
  pm-popup-menu-align-top
  pm-color-alist
  process-priority
  program-name-handler-alist

Additional command line options for PM:

  -pm                   Use windowing system
  -name NAME            Set name of frame (displayed in the titlebar)
  -font FONT            Select font
  -background COLOR     Select default background color
  -foreground COLOR     Select default foreground color
  -T NAME               See -name
  -fn FONT              See -font
  -fg COLOR             See -foreground
  -bg COLOR             See -background

Example:

  emacs -pm -fg white -bg os2darkblue -fn 8.Courier myfile.c

Fonts:

  A font is specified by size (printer's points) and name; see above.

Colors:

  See pm-color-alist in term/pm-win.el

Additional frame parameters for modify-frame-parameters and
default-frame-alist:

  Frame parameter  ³ Type    ³ Default    ³ Description
  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  name             ³ String  ³            ³ Window title
  font             ³ String  ³"10.Courier"³ Default font of frame
  menu-font        ³ String  ³ nil        ³ Font for menus
  background-color ³ String  ³ "white"    ³ Default background color
  foreground-color ³ String  ³ "black"    ³ Default foreground color
  alt-modifier     ³ Symbol  ³ meta       ³ Modifier generated by left Alt key
  altgr-modifier   ³ Symbol  ³ alt        ³ Modifier generated by AltGr key
  cursor-type      ³ Symbol  ³ box        ³ Cursor type
  cursor-blink     ³ Boolean ³ t          ³ Blinking cursor
  shortcuts        ³ List    ³ nil        ³ Disable F1, F10, A-f4, A-SPC etc.
  mouse-buttons    ³ String  ³ "132"      ³ Swap mouse buttons
  height           ³ Integer ³ 25         ³ Height of window, in lines
  width            ³ Integer ³ 80         ³ Widtht of window, in columns
  left             ³ Integer ³            ³ horizontal position, in pixels
  top              ³ Integer ³            ³ vertical position, in pixels
  var-width-fonts  ³ Boolean | nil        ³ enable variable-width fonts

The value of a frame parameter of type Boolean should be either `t' to
enable the feature or `nil' to disable the feature.

Menu font:

  You can select the font to be used in menus with the menu-font frame
  parameter.  The value is either `nil' or a string "SIZE.NAME".
  `nil' is the default and selects the system default.  To choose a
  different font, use "SIZE.NAME", where SIZE is the size of the font
  in printer's points and NAME is the name of the font.  Example:
  "5.Small".  If the font does not exist, the system default will be
  used.

Alt modifiers:

  alt           The ALT key generates the A- modifier
  meta          The ALT key generates the M- modifier
  hyper         The ALT key generates the H- modifier
  super         The ALT key generates the s- modifier

Cursor types:

  bar            A thin vertical bar (using the system default width)
  (bar . WIDTH)  A vertical bar, WIDTH pixels wide
  box            A filled box (default)
  frame          The outline of a box
  underline      A horizontal line below the characters
  halftone       A filled box (gray)

Shortcuts:

  The Presentation Manager uses the keys F1, F10, Alt, AltGr,
  Alt+Space, and Alt+F4 through Alt+F11 as accelerator keys
  (shortcuts).  By default, Emacs disables those keys, making them
  available for binding them to Emacs commands.  (The default
  site-start.el file, however, enables the Alt+F4 shortcut for closing
  the frame.)

  If you want to use Alt+F7 for moving a frame, F10 for selecting the
  menubar, etc., you have to restore the original meaning of those
  keys with the `shortcuts' frame parameter.

  The argument of `shortcuts' is either nil (all accelerator keys are
  disabled -- this is the default), t (all accelerator keys are
  enabled), or a list of keys to be enabled (all other accelerator
  keys are disabled).  To disable the accelerator keys Alt and AltGr
  (which can be quite annoying) while keeping all other accelerators,
  use the following cons (pair) in the list of frame parameters:

        (shortcuts . (f1 f10 alt-space alt-f4 alt-f5 alt-f6
                      alt-f7 alt-f8 alt-f9 alt-f10 alt-f11))

  Note that `alt' and `altgr' are missing in the list.

Mouse buttons:

  The argument of the mouse-buttons parameter is a string of 3
  characters.  The first character defines the event generated by the
  left mouse button, the second character defines the event generated
  by the middle mouse button (which doesn't exist on two-button mice),
  the third character defines the event generated by the right mouse
  button.  Each character is either 1 (mouse-1), 2 (mouse-2), 3
  (mouse-3) or a space (no event).  The default is "132", according to
  OS/2 conventions.  With this value, a two-button mouse cannot
  generate a mouse-3 event.

Example:

  (setq default-frame-alist
        (append '((background-color . "os2darkblue")
                  (foreground-color . "white")
                  (alt-modifier . alt)
                  (altgr-modifier . hyper)
                  (font . "8.Courier")
                  (menu-font . "8.Helv")
                  (mouse-buttons . "123")
                  (shortcuts . (alt-f4 alt-space)))
                default-frame-alist))



Missing features, misfeatures, bugs
===================================

- The emacs-priority variable is ignored.  Use the emacs-priority
  function instead.  Note that lisp/term/pm-win.el calls
  emacs-priority.

- interrupt-process doesn't work unless the process is an immediate
  child of Emacs or is an emx program.  Therefore,
  comint-interrupt-subjob (C-c C-c) doesn't work.

- The timestamps of most events are always 0.  For some events, the
  timestamp is misused for internal purposes.  The timestamp is valid
  only for mouse button events.

- Several functions specific to X Windows are missing.

- OS/2 does not support all three-button mice.  Therefore, you can use
  only two buttons with certain mice.  RODENT.SYS, a shareware mouse
  driver written by Michael Lee Finney (m.finney@genie.geis.com)
  supports additional three-button mice.  Look for RODENT.ZIP or
  RODNT100.ZIP.  Unfortunately, the registration cost is likely to
  exceed the cost of a new mouse...

- Emacs doesn't know that trailing dots in file names are ignored by
  OS/2.  It believes that "foo" and "foo." are different files, a
  belief it probably shares with quite a few OS/2 users.

- Emacs' client windows are not repainted while a popup menu is active.

- Coordinates reported for mouse events and used by x-popup-menu are
  character coordinates, not pixel coordinates.  However, characters
  are of size 1 by 1.  In consequence, menus usually appear in the
  correct location.

- OS/2's standard file dialog rejects file names starting with a dot.
  The more people complain to IBM, the sooner that bug will be fixed.

- OS/2 does not pass M-Home (Alt+Home) to applications.

- File names containing blanks cannot be used with emacsclient.

- See the `Scroll bars' section for information on scroll bars.

- See the `Using ange-ftp' section for information on ange-ftp.



Who did the emx port of GNU Emacs 20.6?
=======================================

        Jeremy Bowen
        jeremyb@clear.net.nz   
        New Zealand

There is currently no mailing list for OS/2 port of GNU Emacs.  You
can email me directly with questions and I will do my best to answer
them. 

I work on Emacs in my spare time (which is increasingly scarce these
days :-) but I will do my best to help you with problems. 

For problems with things you think are bugs in the OS/2 port, I'm more
than happy to get your email.

For questions about how to make certain features work, please try the
Emacs related newsgroups on Usenet. If this is unsuccessful then it is
probably a bug in the OS/2 port and you should let me know.

Emacs comes with no warranty, see COPYING for details.

---------------------------------- END ---------------------------------------
