README_os_390.txt for version 7.0 of Vim: Vi IMproved.

Welcome to the OS/390 Unix port of VIM.

ATTENTION: THIS IS AN _ALPHA_ VERSION!!!
I expect you to know how to handle alpha software!

This port was done by Ralf Schandl <schandl@de.ibm.com>.
This port is not maintained or supported by IBM!!


For the list of changes see runtime/doc/os_390.txt.


Compiling:
----------

Note: After the file configure was created via autoconf, it had been
      handedited, to make the test for ICEConnectionNumber work.
      DO NOT run autoconf again!

Without X11:

If you build VIM without X11 support, compiling and building is nearly
straightforward. The only restriction is, that you can't call make from the
VIM toplevel directory. Change to the src directory first and call make from
there. Here is a what to do:

    # Don't use c89!
    # Make additional symbols visible.
    # Allow intermixing of compiler options and files.

    $ export CC=cc
    $ export CFLAGS=-D_ALL_SOURCE
    $ export _CC_CCMODE=1
    $./configure --enable-max-features --without-x --enable-gui=no
    $ cd src
    $ make
    $ make test

      Note: Test 28 will be reported as failed. This is because diff can't
	    compare files containing '\0' characters. Test 11 will fail if you
	    don't have gzip.

    $ make install


With X11:

There are two ways for building VIM with X11 support. The first way is simple
and results in a big executable (~13 Mb), the second needs a few additional
steps and results in a much smaller executable (~4.5 Mb). This examples assume
you want Motif.

  The easy way:
    $ export CC=cc
    $ export CFLAGS="-D_ALL_SOURCE -W c,dll"
    $ export LDFLAGS="-W l,dll"
    $ export _CC_CCMODE=1
    $ ./configure --enable-max-features --enable-gui=motif
    $ cd src
    $ make

    With this VIM is linked statically with the X11 libraries.

  The smarter way:
    Make VIM as described above. Then create a file named 'link.sed' with the
    following contense:

	s/-lXext  *//g
	s/-lXmu  *//g
	s/-lXm	*/\/usr\/lib\/Xm.x /g
	s/-lX11  */\/usr\/lib\/X11.x /g
	s/-lXt	*//g
	s/-lSM	*/\/usr\/lib\/SM.x /g
	s/-lICE  */\/usr\/lib\/ICE.x /g

    Then do:
    $ rm vim
    $ make

    Now Vim is linked with the X11-DLLs.

    See the Makefile and the file link.sh on how link.sed is used.


Hint:
-----
Use the online help! (See weaknesses below.)

Example:
Enter ':help syntax' and then press <TAB> several times, you will switch
through all help items containing 'syntax'. Press <ENTER> on the one you are
interested at. Or press <Ctrl-D> and you will get a list of all items printed
that contain 'syntax'.

The helpfiles contains cross-references. Links are between '|'. Position the
cursor on them and press <Ctrl-]> to follow this link. Use <Ctrl-T> to jump
back.

Known weaknesses:
-----------------

- You can't call make from the toplevel directory, you have to do a 'cd src'
  first.  If you do it, make will call configure again. I don't know why and
  didn't investigate it, there were more important things to do. If you can
  make it work drop me a note.

- The documentation was not updated for this alpha release. It contains lot of
  ASCII dependencies, especially in examples.

- Digraphs are dependent on code page 1047. Digraphs are used to enter
  characters that normally cannot be entered by an ordinary keyboard.
  See ":help digraphs".

- Using 'ga' to show the code of the character under the cursor shows the
  correct dec/hex/oct values, but the other informations might be missing or
  wrong.

- The sed syntax file doesn't work, it is ASCII dependent.

Bugs:
-----
If you find a bug please inform me (schandl@de.ibm.com), don't disturb Bram
Moolenaar. It's most likely a bug I introduced during porting or some ASCII
dependency I didn't notice.

Feedback:
---------
Feedback welcome! Just drop me a note.
