*os_beos.txt*	For Vim Classic version 8.3.  Last change: 2016 Mar 28


		  VIM REFERENCE MANUAL    by Bram Moolenaar


							*BeOS* *BeBox*
This is a port of Vim 5.1 to the BeOS Preview Release 2 (also known as PR2)
or later.

This file contains the particularities for the BeBox/BeOS version of Vim.  For
matters not discussed in this file, Vim behaves very much like the Unix
|os_unix.txt| version.

 1. General			|beos-general|
 2. Compiling Vim		|beos-compiling|
 3. Timeout in the Terminal	|beos-timeout|
 4. Unicode vs. Latin1		|beos-unicode|
 5. The BeOS GUI		|beos-gui|
 6. The $VIM directory		|beos-vimdir|
 7. Drag & Drop			|beos-dragndrop|
 8. Single Launch vs. Multiple
    Launch			|beos-launch|
 9. Fonts			|beos-fonts|
10. The meta key modifier	|beos-meta|
11. Mouse key mappings		|beos-mouse|
12. Color names			|beos-colors|
13. Compiling with Perl		|beos-perl|


1. General						*beos-general*

The default syntax highlighting mostly works with different foreground colors
to highlight items.  This works best if you set your Terminal window to a
darkish background and light letters.  Some middle-grey background (for
instance (r,g,b)=(168,168,168)) with black letters also works nicely.  If you
use the default light background and dark letters, it may look better to
simply reverse the notion of foreground and background color settings.  To do
this, add this to your .vimrc file (where <Esc> may need to be replaced with
the escape character): >

  :if &term == "beos-ansi"
  :    set t_AB=<Esc>[3%dm
  :    set t_AF=<Esc>[4%dm
  :endif


2. Compiling Vim					*beos-compiling*

From the Advanced Access Preview Release (AAPR) on, Vim can be configured with
the standard configure script.  To get the compiler and its flags right, use
the following command-line in the shell (you can cut and paste it in one go):

CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \
    ./configure --prefix=/boot/home/config

$BE_C_COMPILER is usually "mwcc", $BE_DEFAULT_C_FLAGS is usually "-I- -I."

When configure has run, and you wish to enable GUI support, you must edit the
config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead
of $(NONE_xxx).
Alternatively you can make this change in the Makefile; it will have a
more permanent effect.  Search for "NONE_".

After compilation you need to add the resources to the binary.  Add the
following few lines near the end (before the line with "exit $exit_value") of
the link.sh script to do this automatically.

    rmattr BEOS:TYPE vim
    copyres os_beos.rsrc vim
    mimeset vim

Also, create a dummy file "strip":

    #!/bin/sh
    mimeset $1
    exit 0

You will need it when using "make install" to install Vim.

Now type "make" to compile Vim, then "make install" to install it.

If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and
create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}).  Furthermore you must
copy Vim's configuration files to $HOME/config/share/vim:
vim-5.0s/{*.vim,doc,syntax}.  For completeness, you should also copy the nroff
manual pages to $HOME/config/man/man1.  Don't forget ctags/ctags and xxd/xxd!

Obviously, you need the unlimited linker to actually link Vim.  See
http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS.
There are currently no other linkers that can do the job.

This won't be able to include the Perl or Python interfaces even if
you have the appropriate files installed. |beos-perl|


3. Timeout in the Terminal				*beos-timeout*

Because some POSIX/UNIX features are still missing[1], there is no direct OS
support for read-with-timeout in the Terminal.  This would mean that you cannot
use :mappings of more than one character, unless you also :set notimeout.
|'timeout'|

To circumvent this problem, I added a workaround to provide the necessary
input with timeout by using an extra thread which reads ahead one character.
As a side effect, it also makes Vim recognize when the Terminal window
resizes.

Function keys are not supported in the Terminal since they produce very
indistinctive character sequences.

These problems do not exist in the GUI.

[1]: there is no select() on file descriptors; also the termios VMIN and VTIME
settings do not seem to work properly.  This has been the case since DR7 at
least and still has not been fixed as of PR2.

							*beos-unicode*
4. Unicode vs. Latin1					*beos-utf8*

BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to
8-bit characters).  Vim assumes ISO-Latin1 or other 8-bit character codes.
This does not produce the desired results for non-ASCII characters.  Try the
command :digraphs to see.  If they look messed up, use :set isprint=@ to
(slightly) improve the display of ISO-Latin1 characters 128-255.  This works
better in the GUI, depending on which font you use (below).

You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou
-f iso1 filename) or to (xtou -t iso1 filename) ISO-Latin1 characters.


5. The BeOS GUI						*beos-gui*

The BeOS GUI is no longer included.  It was not maintained for a while and
most likely didn't work.  If you want to work on this: get the Vim 6.x version
and merge it back in.


6. The $VIM directory					*beos-vimdir*

$VIM is the symbolic name for the place where Vims support files are stored.
The default value for $VIM is set at compile time and can be determined with >

  :version

The normal value is /boot/home/config/share/vim.  If you don't like it you can
set the VIM environment variable to override this, or set 'helpfile' in your
.vimrc: >

  :if version >= 500
  :    set helpfile=~/vim/vim54/doc/help.txt
  :    syntax on
  :endif


7. Drag & Drop						*beos-dragndrop*

You can drop files and directories on either the Vim icon (starts a new Vim
session, unless you use the File Types application to set Vim to be "Single
Launch") or on the Vim window (starts editing the files).  Dropping a folder
sets Vim's current working directory. |:cd| |:pwd| If you drop files or
folders with either SHIFT key pressed, Vim changes directory to the folder
that contains the first item dropped.  When starting Vim, there is no need to
press shift: Vim behaves as if you do.

Files dropped set the current argument list. |argument-list|


8. Single Launch vs. Multiple Launch			*beos-launch*

As distributed Vim's Application Flags (as seen in the FileTypes preference)
are set to Multiple Launch.  If you prefer, you can set them to Single Launch
instead.  Attempts to start a second copy of Vim will cause the first Vim to
open the files instead.  This works from the Tracker but also from the command
line.  In the latter case, non-file (option) arguments are not supported.

NB: Only the GUI version has a BApplication (and hence Application Flags).
This section does not apply to the GUI-less version, should you compile one.


9. Fonts						*beos-fonts*

Set fonts with >

  :set guifont=Courier10_BT/Roman/10

where the first part is the font family, the second part the style, and the
third part the size.  You can use underscores instead of spaces in family and
style.

Best results are obtained with monospaced fonts (such as Courier).  Vim
attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not
work for proportional fonts (despite what the BeBook says).

Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1.
This also does not work for all fonts.  It does work for Courier, but not for
ProFontISOLatin1/Regular (strangely enough).  You can verify this by giving the >

  :digraphs

command, which lists a bunch of characters with their ISO Latin 1 encoding.
If, for instance, there are "box" characters among them, or the last character
isn't a dotted-y, then for this font the encoding does not work.

If the font you specify is unavailable, you get the system fixed font.

Standard fixed-width system fonts are:

	      ProFontISOLatin1/Regular
		  Courier10_BT/Roman
		  Courier10_BT/Italic
		  Courier10_BT/Bold
		  Courier10_BT/Bold_Italic

Standard proportional system fonts are:

		    Swis721_BT/Roman
		    Swis721_BT/Italic
		    Swis721_BT/Bold
		    Swis721_BT/Bold_Italic
		Dutch801_Rm_BT/Roman
		Dutch801_Rm_BT/Italic
		Dutch801_Rm_BT/Bold
		Dutch801_Rm_BT/Bold_Italic
		   Baskerville/Roman
		   Baskerville/Italic
		   Baskerville/Bold
		   Baskerville/Bold_Italic
		 SymbolProp_BT/Regular

Try some of them, just for fun.


10. The meta key modifier				*beos-meta*

The META key modifier is obtained by the left or right OPTION keys.  This is
because the ALT (aka COMMAND) keys are not passed to applications.


11. Mouse key mappings					*beos-mouse*

Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse.  If
you use the default Mouse preference settings these names indeed correspond to
reality.  Vim uses this mapping:

    Button 1 -> LeftMouse,
    Button 2 -> RightMouse,
    Button 3 -> MiddleMouse.

If your mouse has fewer than 3 buttons you can provide your own mapping from
mouse clicks with modifier(s) to other mouse buttons.  See the swapmouse
package for an example:					 |gui-mouse-mapping|
$VIMRUNTIME/pack/dist/opt/swapmouse/plugin/swapmouse.vim


12. Color names						*beos-colors*

Vim has a number of color names built-in.  Additional names are read from the
file $VIMRUNTIME/rgb.txt, if present.  This file is basically the color
database from X.  Names used from this file are cached for efficiency.


13. Compiling with Perl					*beos-perl*

Compiling with Perl support enabled is slightly tricky.  The Metrowerks
compiler has some strange ideas where to search for include files.  Since
several include files with Perl have the same names as some Vim header
files, the wrong ones get included.  To fix this, run the following Perl
script while in the vim-5.0/src directory: >

   preproc.pl > perl.h

    #!/bin/env perl
    # Simple #include expander, just good enough for the Perl header files.

    use strict;
    use IO::File;
    use Config;

    sub doinclude
    {
	my $filename = $_[0];
	my $fh = new IO::File($filename, "r");
	if (defined $fh) {
	    print "/* Start of $filename */\n";

	    while (<$fh>) {
		if (/^#include "(.*)"/) {
		    doinclude($1);
		    print "/* Back in $filename */\n";
		} else {
		    print $_;
		}
	    }
	    print "/* End of $filename */\n";

	    undef $fh;
	} else {
	    print "/* Cannot open $filename */\n";
	    print "#include \"$filename\"\n";
	}
    }

    chdir     $Config{installarchlib}."/CORE";
    doinclude "perl.h";

It expands the "perl.h" header file, using only other Perl header files.

Now you can configure & make Vim with the --enable-perlinterp option.
Be warned though that this adds about 616 kilobytes to the size of Vim!
Without Perl, Vim with default features and GUI is about 575K, with Perl
it is about 1191K.

-Olaf Seibert

[Note: these addresses no longer work:]
<rhialto@polder.ubc.kun.nl>
http://polder.ubc.kun.nl/~rhialto/be

 vim:tw=78:ts=8:noet:ft=help:norl:
