Table of contents

       1.0 Kit installation instructions
           1.1 Briefly
           1.2 Unpacking
           1.3 Quick install -- personal
           1.4 Quick install -- site wide
           1.5 Install from scratch -- without prior elisp directory
              1.5.1 Preconditions for Unix
              1.5.2 Preconditions for Win32
              1.5.3 Making Emacs aware of elisp
           1.6 Make procedure
           1.7 Autoload files
           1.8 Minimum installation
           1.9 Makefile.mak (obsolete documentation)
           1.10 Submitting bug reports

       2.0 Project information
           2.1 Project location
           2.2 Platform support
           2.3 Library note
           2.4 TinyPgp project
           2.5 Emacs resource files -- startup files

       3.0 Keeping in touch
           3.1 Mailing list
           3.2 Updates: Watching files
           3.3 Updates: Automatic fetch method
           3.4 What does prefix "tiny" mean
           3.5 Thank you section

       4.0 About loading packages
           4.1 Dynamic byte compilation note
           4.2 Use autoloads
           4.3 Customizing packages

       5.0 Appendix A - Win32 and Unix beginners
           5.1 Prompt syntaxes
           5.2 Dos and Unix command equivalences
           5.3 Calling perl programs
           5.4 Changing environment settings

       6.0 Appendix B - Procmail project files

       7.0 Appendix C - Perl project files

       8.0 Appendix D - Copyright information
           8.1 Program files
           8.2 Text files and documentation

1.0 Kit installation instructions

    1.1 Briefly

        #T2HTML-TITLE Emacs Tiny Tools Project README
        #T2HTML-METAKEYWORDS Emacs, Emacs Lisp, Tiny Tools Documentation
        #T2HTML-OPTION --css-code-bg
        #T2HTML-OPTION --css-code-note=Note:

        .$Id: README.txt,v 2.31 2003/11/13 21:17:33 jaalto Exp $

        [The Sourceforge Public Summary] Emacs Tiny Tools is a collection
        of libraries and packages, which are designed to be OS and X/Emacs
        platform independent. E.g. configure load-path automatically, URL
        handler, easy-delete, mail complete and many more. This file is
        README.txt included in Emacs Tiny Tools kit. It contains
        instructions how to install a cross platform Emacs/XEmacs/
        Unix/Win32 compatible utilities for wide variety of tasks:
        diff/patch; searching, replacing, caching files, automatic
        load-path setup and more.

    1.2 Unpacking

        In _Win32_ use Winzip found at <http://www.winzip.com/> and in
        _Unix_ use unzip available at
        <http://www.info-zip.org/pub/infozip/>. Extract the kit and it will
        create directory according to the version number:
        emacs-tiny-tools.YYYY.MMDD. The kit build method is only for your
        convenience and it is not necessary to run the build command in
        order to use the Emacs Lisp files or to read the documentation
        under `/doc'.

            % mkdir -p $HOME/elisp/packages/
            % cd $HOME/elisp/packages/
            % gzip -dc ~/tmp/download/emacs-tiny-tools*.gz | tar xvf -

    1.3 Quick install -- personal

       1.3.1 Activating tiny tools

        If you just want to install the package for your personal use, add
        following lines at the start of your Emacs initialization file.
        Lines will configure your Emacs to be aware of all lisp paths under
        `$HOME/elisp' or `$HOME/lisp'.

            ;; $HOME/.emacs
            ;; PLEASE READ DOCUMENTATION OF TINYPATH FOR MORE.

            ;; Load package "tinypath.el", drop the ".el" from command
            ;; The rest of the code can be anywhere in startup file.
            (load "/path/to/tinypath")


            ;; Next call auto configures most of the packages with defaults
            ;; See M-x tiny-setup-display and C-h f tiny-setup

            (require 'tiny-setup)
            (tiny-setup 'all)

            ;; Perhaps you would like to load some package immediately.

            (require 'tinymy)

            ;; End of example

       1.3.2 What next? Where I put other lisp packages?

        When the `tinypath.el' package is active, you can pretty much put
        packages or individual lisp files anywhere, provided that they
        reside under *$HOME/elisp*. you can create or delete directories
        and move files around to organize your lisp files. The only
        restriction is that you do not use any symlinks; not to directories
        or not to files (reason is explained in tinypath.el documentation).
        Let's suppose the hierarchy of lisp files look something like this:

            $HOME/elisp/
                        |
                        +-packages/
                        |         |
                        |         + emacs-tiny-tools-NNNN.NNNN/
                        |         + jdee-NN.NN/
                        +-other/
                        +-my/

        Now, perhaps you see an *utility.el* in gnu.emacs.sources that you
        want to use. How do you install it? Just drop it in, say,
        `$HOME/elisp/other/' directory and call `M-x'
        `tinypath-cache-regenerate'. After that Emacs knows the package now
        and in next Emacs sessions. You still have to add relevant lines to
        your Emacs startup files which activates the package. Look into
        *utility.el* and it's setup instructions, something like:

            # $HOME/.emacs

            <leave those tiny-package definitions here first>

            (load "utility")    ;; Start using the new file
            (utility-install)   ;; or whatever is needed to activate it

            # End of file

       1.3.3 What tiny-setup installtion does?

        The installation function `tiny-setup' logs actions made to Emacs
        into *Messages* or XEmacs *Message-Log* buffer. The output looks
        something like this with the default setting _all_. For more finer
        control for each individual feature, refer to `C-h' `f'
        `tiny-setup'. Messages that read "No options to configure" means
        that there is no default installation (yet) and you have to
        manually take the package into use by reading its documentation.
        The setup is very conservative: anything serious in existing emacs
        will _not_ _be_ _overridden_.

            TinySetup: tinyappend      configured with `bind'
            TinySetup: Key "C-c=" set to `tinyappend-end'.
            TinySetup: Key "C-c-" set to `tinyappend-beg'.
            TinySetup: Key "C-c_" set to `tinyappend-kill'.
            TinySetup: Key "C-c|" set to `tinyappend-yank'.
            TinySetup: tinybookmark    configured with `defalias'
            TinySetup: tinybuffer      configured with `bind'
            TinySetup: tinycache       configured with `autoload'
            TinySetup: tinychist       No options to configure.
            TinySetup: tinycomment     configured with `bind'
            TinySetup: Key [(meta 59)](M-;) set to `tinycomment-indent-for-comment' (FORCED).
            TinySetup: tinycompile     configured with `autoload'
            TinySetup: tinydesk        configured with `activate'
            TinySetup: tinydiff        configured with `autoload'
            TinySetup: `auto-mode-alist' now contains (\.diff\' . turn-on-tinydiff-mode)
            TinySetup: `auto-mode-alist' now contains (\.patch\' . turn-on-tinydiff-mode)
            TinySetup: tinydired       configured with `autoload'
            TinySetup: tinyeat         configured with `bind'
            TinySetup: Key (ESC DEL) already has has definition `backward-kill-word'. Not set to `tinyeat-erase-buffer'
            TinySetup: tinyef          configured with `autoload'
            TinySetup: tinygnus        configured with `autoload'
            TinySetup: tinyhotlist     configured with `autoload'
            TinySetup: tinyigrep       configured with `autoload'
            TinySetup: tinyindent      No options to configure.
            [And so on...]

    1.4 Quick install -- site wide

        If you are Using PC or administrate Linux and you have both XEmacs
        and Emacs installations; plus you have lot of extra Emacs packages
        that are available form the Net, you need to tell the _different_
        locations where the installed lisp directories are. In this case,
        you have to set the `tinypath-:load-path-root' yourself. In
        previous personal installation example, this was automatically
        determined.

            ;;  Your lisp/site-start.el should contain this installation code.
            ;;  STILL, IN SITE-WIDE SETUP, THE CACHE IS STORED TO EACH USER'S
            ;;  HOME DIRECTORY.
            ;;
            ;;  List of ROOT directories where all Emacs lisp
            ;;  files are located. Update list according to your site.
            ;;  No need to optimize away non-existing directories,
            ;;  because they will be ignored.

            (setq tinypath-:load-path-root
              (list

                (if (boundp 'xemacs-logo)               ;; ROOT DIR ONE
                    "Your-XEmacs-NN.NN/lisp"
                  "Your-Emacs-NN.NN/lisp")

                (if (boundp 'xemacs-logo)               ;; ROOT DIR TWO
                    "Your-XEmacs-site-list-directory"
                  "Your-Emacs-site-list-directory")

                "~/elisp"                               ;; ... and so on
                "~/lisp"))

            (load "ABSOLUTE-INSTALLATION-PATH-HERE/tinypath")

            ;; End of example

        After the code above, The site users can start configuring all the
        packages found in `load-path'. Appropriate startup code is needed
        for each user's `$HOME/.emacs' files to activate the packages,
        unless you include some site wide defaults.

    1.5 Install from scratch -- without prior elisp directory

       1.5.1 Preconditions for Unix

        If you don't have your private Emacs lisp directory yet, it's
        time to create one. Decide where you want to put future downloaded
        packages. Traditionally this has been `$HOME/elisp'. Run command:

            % mkdir $HOME/elisp
            % mkdir $HOME/elisp/config  # for configuration settings
            % mkdir $HOME/tmp           # Make sure this exists for temp files

       1.5.2 Preconditions for Win32

        In Windows operating system, there is no default HOME, so you have
        to choose one directory for your personal use. Emacs installation
        in Win32 might look like this:

            C:/emacs/emacs-19.34/       # your old Emacs
            C:/emacs/emacs-20.7.1/      # the new Emacs
            C:/emacs/emacs-21.2.2/      # more newer Emacs
            C:/home/elisp               # your private lisp package dir

            dos> c:
            dos> md \home
            dos> cd \home
            dos> md tmp
            dos> md elisp
            dos> md elisp\config

        At minimum, you must add environment variable *HOME* and make your
        Win98/NT/W2K/XP have it visible at boot time. In Win9x, add this
        line to your `c:\autoexec.bat':

            set HOME=c:\home

        In other Windows versions, use Control Panel => System =>
        Environment. Make sure you also create the directory to disk. Refer
        to NT Emacs FAQ at
        <http://www.gnu.org/software/emacs/windows/ntemacs.html> for more
        complete information about installing Win32 Emacs. After this line,
        you Emacs translates tilde(~) character into reference to the
        $HOME. Your Emacs startup file must reside at directory
        `$HOME/.emacs' which is the traditional way of saying "Emacs
        startup file is under HOME". In win32, this means that the location
        would be:

            c:\home\.emacs

       1.5.3 Making Emacs aware of elisp packages

        Emacs can't load additional packages if it doesn't know where they
        are located. The traditional way has been to add appropriate paths
        one by one to the `load-path' variable. Tiny Tools provides
        more versatile and easier path configuration as demonstrated below:

            ;; $HOME/.emacs -- Emacs startup file

            ;;  These two lines are not necessary, since tinypath.el will
            ;;  handle all this. It has been the traditional Emacs way
            ;;  to add paths in case you need to know
            ;;
            ;; (require 'cl)
            ;; (pushnew  (expand-file-name "~/elisp") load-path :test 'string=)

            (load "ABSOLUTE-INSTALLATION-PATH-HERE/tinypath")

            ;; End of $HOME/.emacs

        The "old" method required you to track every change of Emacs paths
        and manually keep it up to date. It is much easier to let
        *TinyPath* to make all this path configuration automatic.

    1.6 Make procedure

          Note: YOU MUST CONFIGURE `load-path.el' in the kit if you
          compile the packages. _Save_ _your_ _modified_ _copy_ for
          next installation and use the `-l' switch for the perl
          *makefile.pl*. It is not strictly needed to compile
          anything. in fact the maintainer would prefer if you used
          non-compiled versions of the lisp files. Bug reports from
          compiled files are useless for tracking the cause of an
          error.

        Due to platform independence, Perl has been chosen for all
        scripting tasks. It offers more expressive power than `make(1)'
        which is old Unix-only solution. The older make compatible
        "makefile.mak" method is no longer supported due to its vulnerable
        syntax (old time Makefile users know what a missing TAB causes).
        The old makefile.mak file is preserved for educational purposes
        which you can take a look if you need makefile example for
        programming languages like Java or C++.

        You need Unix Perl 5.004+ in order to use the current build method
        Perl for Windows is included in Cygwin. To build the kit, change
        directory to `bin/' and feed the *makefile.pl* to perl. In Win32
        platform, add make directive `unix2dos' and in Unix add `dos2unix'
        which will fix the line endings. Substitute option `emacs' with
        `xemacs' if you're compiling for XEmacs.

            % cd bin/
            % perl makefile.pl --help
            % perl makefile.pl --binary emacs --verbose 2  dos2unix all
                               |                           +======= ===
              All command line options must                |
              come BEFORE build options                    |
                                                           |
                                      Two build options here

        In case everything does not compile right, due to missing lisp
        packages, modify `load-path.el' to include any additional
        directories. Make a copy of it to yourself for later updates and
        supply your version with added option. The "\" at the end of line
        means that the line continues. In Unix, you literally type that
        character, in Win32, you just type everything as one line.

            %  perl makefile.pl --binary emacs --verbose 2  \
               --load your-modified-copy-here/load-path.el  \
               dos2unix all

        _Gnus_ _note:_ packages *tinygnus.el* and *tinymail.el* require the
        very latest development version of Gnus. Modify your copy of
        `load-path.el' to include path to the latest Gnus version.

    1.7 Autoload files

        If you choose not to use file *tiny-setup.el* and function
        `tiny-setup', you could add following statements to your Emacs
        startup file in `$HOME/.emacs'. The autoload file provide
        "functions" that are immediately available in Emacs, but they do
        not load any packages. This is better than using `require'
        commands, because it makes your Emacs start faster.

            ;; $HOME/.emacs

            (load "ABSOLUTE-INSTALLATION-PATH-HERE/tinypath")

            ;;  These won't modify anything in your existing Emacs.

            (require 'tiny-autoload-loaddefs-tiny)
            (require 'tiny-autoload-loaddefs-other)

            ;;  Now, configure anything as you would like.
            ;;  Each feature must be taken into use separately.
            ;;  Read the documentation sections at the beginning of each file.

            ;; End of $HOME/.emacs

    1.8 Minimum installation

        If you are tight of space or otherwise do not need all the tools or
        if you're only interested in specific package, here are the
        instructions how you use minimum installation. The basic idea is to
        include libraries + package(s). Most of the packages require only
        four core libraries, but others may need more e.g. due to XEmacs
        compatibility.

            tinyliba.el     - autoloads
            tinylibb.el     - backward compatibility; Emacs version changes
            tinylibm.el     - macros and other low level forms
            tinylib.el      - main library
            tinylibxe.el    - XEmacs support library

            + NOW select packages that you're interested in.

        Let's take an example how you find out what packages would you need
        for "White Paper Mode" *tinytf.el*.


    1.9 Makefile.mak (obsolete)

        The old *makefile.mak* from very early Unix-only releases has been
        included, but the makefile is not supported and no fixes are
        incorporated even if suggested. The file has been kept in the
        distribution, because it may have some educational value to learn
        makefiles in Unix.

    1.10 Submitting bug reports

        IT IS IMPORTANT THAT YOU USE NON-COMPILED FILES AND SUBMIT THE
        *BACKTRACE* Each lisp package has one or two contact functions.
        When you find an error, immediately contact maintainer with the
        bug report function. The `XXX' is prefix of the package, like
        `tinyurl' for *tinyurl.el*

            M-x load-library RET package.el RET             # load non-compiled
            M-x turn-on-emacs-debug RET                     # From tinyliba.el

            ...  repeat what you did until the point of error ...

            M-x XXX-submit-bug-report       << prefer this if it exists >>
            M-x XXX-submit-feedback

            ... and copy paste any relevant information, like the lisp
            ... error buffer *Backtrace* that might have been generated.

2.0 Project information

    2.1 Project location

        The file you're currently reading is supposed to be `README.txt',
        included in the Tiny Tools distribution kit. The development
        happens at sourceforge and you can download the latest kit from
        there. To monitor the project, go to the project WWW page and
        select from "Latest File Releases" tile-box and "envelope" which
        reads Notes/Monitor. The Project WWW page and ftp download areas
        are below. Please point your web browser to these locations to see
        the latest news. The project pages contain links to all the rest of
        the pages.

        o   Project WWW page at http://sourceforge.net/projects/tiny-tools/
        o   Homepage at http://tiny-tools.sourceforge.net/

    2.2 Platform support

        o   Emacs : 20.7+ in Unix and Win32 platforms.
        o   XEmacs: 21.1+ in _Unix_ platform.
        o   XEmacs: 21.2+ in _Win32_ platform.

        Note: Win32 XEmacs versions prior to 21.2 are buggy. Under
        Win32 don't try to use anything older than 21.2.20.

    2.3 Library note

        IF YOU HAVE OLD tiny*el FILES, DON'T MIX THEM WITH NEW KIT.
        DON'T EVER COPY INDIVIDUAL FILES AROUND. THAT WON'T WORK.

        Functions may have been removed from the libraries due to
        rearrangements and new coding methods. The old versions normally
        won't work with the new kit. Please don't use the old versions. The
        maintainer concentrates to questions regarding only to the latest
        released kit.

    2.4 Emacs plug-in module -- TinyPgp project

        Project is stalled/broken at the time of ing 2000-01-08. No fixes
        are planned in any near future.

        Years back the coding of module TinyPgp started. Lot of
        nights and not-so-well sleep went by and there were over 300
        versions made alone with the Pgp support. It was black and deep
        swamp: different MUAs (RMAIL, VM, Gnus -- beta versions every
        week), different PGP versions, 2.6.x (had so-and-so command line
        support), PGP 5.x and 6.x (that were not designed at all Unix in
        mind; they had no good batch command line support), GPG, which only
        worked at Unix at the time, and there was no way to get it compiled
        in HP-UX, also no windows version were available at that time.

        TinyPgp package offered integration to TM/SEMI to send PGP/MIME
        and supported lot of different re-mailers, direct management of
        re-mailer accounts, multiple key rings, multiple key-access methods
        to key servers and so on...

        It all worked for some time, 2 years, but the variables in this
        soup were too many for the maintainer to be able to continue
        getting them all to work together. Maintaining a single package
        drained efforts from all other projects (perl, procmail and other
        Emacs tools)

        For the time being, the TinyPgp project is in stall (perhaps not
        yet abandoned), and you can expect it to be non-functional. You can
        try it out, bug reports are welcomed, but no problems will be fixed
        in near future. All bug reports, will saved and addressed if time
        allows. There is vision to get once-excellent re-mailer
        support working again and get back to "anonymous" business in the
        spirit of pioneer anon.penet.fi. We'll see if the package is
        ever restored again. Please use http://mailcrypt.sourceforge.net/

3.0 Keeping in touch

    3.1 Mailing list

        There is no mailing list for the project. Please contact
        the maintainer directly.

    3.2 Updates: Watching files

        All the sourceforge projects can also be "watched" and make them
        send you an email whenever there is new release available. See the
        small "letter" or "paper" icon next to the the published kits at
        sourceforge `/project/tiny-tools' main page.

    3.3 Updates: Automatic fetch method

        It is best to use some general and easy update software which can
        periodically pull out the release. You may already be familiar with
        `wget(1)' whose binaries for Unix and Win32 can be found at:
        http://www.gnu.org/software/wget/wget.html

        There exists a cross platform Perl script which offers
        similar capabilities, including a configuration file and ability to
        find _newer_ releases from the download locations (wget only gets
        what you instruct). It may suit better for automatic retrieval of
        material with changing version numbers. Visit project
        <http://perl-webget.sourceforge.net/>. You can use the program like
        this:

            % mywebget.pl --help
            % mywebget.pl --new --overwrite --verbose HTTP-OR-FTP-FILE-LOCATION

        Define your `$HOME/config/mywebget/mywebget.conf' file where
        you cache URLs that you want to retrieve periodically and add
        appropriate entries. Start by setting these variables and put
        them into your startup file:

            % mkdir -p $HOME/elisp/packages        # drop directory
            % mkdir -p $HOME/config
            % setenv MYWEBGET_CFG $HOME/config/mywebget/mywebget.conf

        Next, add following contents to the configuration file:

            #  $HOME/conf/mywebget/mywebget.conf -- Configuration file

            ROOT  = $HOME
            ELISP = $ROOT/elisp
            EPKG  = $ELISP/packages

            tag1: my-emacs-lisp         # keep tag name prefix "my"

                lcd: $EPKG              # chdir to elisp/packages

                tag2: my-tiny-tools

                    # This does not have to be the exact file name,
                    # The name is used as template and newer fiel will be found

                    ftp://download.sourceforge.net/pub/sourceforge/tiny-tools/emacs-tiny-tools-1999.0909.zip new:

            # end of configuration file

        After putting the tags in place, you only have to remember the
        *tag* to pull off latest version of the package. Refer to Perl
        script for more. You probably want to do this bi-weekly to update
        your favorite programs by a cron. You do not have to update the
        "version name" in the file, the *new:* directive will automatically
        retrieve the latest version for you:

            % mywebget.pl -v -o -n -t tiny-tools
            % mywebget.pl -o -t tiny-tools          (or simply this)

    3.4 What does prefix "tiny" mean

        The first package made was *tinyappend.el*, a simple utility to
        gather selected areas of text somewhere convenient. Since then the
        prefix "tiny" has been preserved in front of every lisp file. The
        word has no other meaning.

    3.5 Thank you section

        The life with Emacs evolved in the direction called "Tiny
        Tools"; modules that got initially written in the past years
        starting with Emacs 19.28. The current code is aimed to be
        XEmacs/Emacs Unix/NT platform independent. The cross platform could
        not be possible without following testers that patiently kept
        reporting bugs and making improvement suggestions. Most sincere
        thanks to you all.

        o   Henk SPG <tank@xs4all.nl> who had courage to take early v1.6x
            TinyPgp in XEmacs. I got very good feedback and bug tracing
            assistance from him.
        o   Samuel Tardieu <sam@inf.enst.fr> has been a key figure
            in  testing the PGP interfaces with 2.6.x and 5.x in Unix.
        o   Dan Rich <drich@cisco.com> who assisted me with solving the
            XEmacs 20-21.x incompatibility problems. The correction cycle
            rolled out changes that caused rewriting my other packages too.
            In addition he suggested many other new features I didn't think
            of before. He cleared many problems by talking to XEmacs 20.x
            maintainers and if that's not all, he also made sure the
            packages worked in VM. I'm very happy that Dan came into
            picture.
        o   Sami Khoury <skhoury@omnisig.com> tried every new tiny tools
            release and reported any byte compiler errors with latest Emacs
            releases. He also suggested many improvements, many new
            features to add and sent patches. Without Sami, I would have
            not been able to know how things work in Emacs 20.x and 21.x.
            Sami was the ears and eyes in the bleeding edge Emacs
            development till the FSF opened their Emacs CVS server.
        o   David x callaway <dxc@xprt.net> joined the team somewhere 2000-10
            and kept asking, suggesting and reporting improvements in rapid
            fashion. That's what is needed to make all tools better. Thank
            you David, Don't stop bugging the maintainer *smile*.
        o   Luis Miguel Hernanz Iglesias <luish@germinus.com> got
            interested in 2000-10 and was fascinated with the TinyPath
            (new utility) which made Emacs lisp package path configuration
            a joy. He joined the development and sent lof of patches and
            squeezed many bugs from TinyPath. I'm impressed!

4.0 About loading packages

    4.1 Dynamic byte compilation note

          Please read these instructions with some salt, because the
          maintainer is not 100% sure of the accuracy of this explanation.
          Please feel free to suggest corrections to this text.

        All the files in Tiny Tools kit turn on the dynamic byte
        compilation flag, which appeared in Emacs 19.29 and XEmacs 19.14.
        That's something you don't have to worry about, but I think you are
        would be interested in hearing, that it has some nice benefits over
        the normal compilation. If you say

            (require 'tinylibm)

        the statement used to mean "load library tinylibm". All functions
        were imported into emacs in a whip. But that's  different now with
        dynamically compiled files. Now it means "load STUBS from library
        tinylibm". The STUBS are pointers in a table to all the rest of the
        functions in the library. So, the functions are not actually loaded
        to your Emacs; neither does your Emacs suffer from sudden memory
        bloat.

        When the actual function is called, Emacs automatically substitutes
        the STUB with the function definition by loading it from the
        library. Just that function, not the others. That's the benefit of
        the dynamic byte compilation in a nutshell.

        By the way, if you happen to need some function from the libraries,
        don't do this:

            (require 'tinylimt)     ;; mail tools

        _Do_ _not_ _do_ _this_ either, if you need something from the main
        library:

            (require 'tinylib)

        The correct way to let your emacs know about all the existing
        library functions, is to load the *m* library. It will define
        all the necessary autoloads to rest of the function and you don't
        have to worry about the location of a particular function

            ;;  Define everything, publish interfaces. Defines
            ;;  backward compatibility functions, autoloads etc.
            (require 'tinylibm)

    4.2 Use autoloads

        When you install packages, try to avoid loading them from your
        $HOME/.emacs like this

            (require 'tinytab)  ;; TAB minor mode

        Because it means that the whole package is loaded (or STUBS) if you
        do have many `require' commands, your Emacs startup time grows
        proportionally. You hate slow Emacs startup; right? Okay, there is
        much better way to load files; called `autoload'. It means that you
        tell Emacs; that "function exists in package xxx". When function or
        feature is called (and the autoload triggers), Emacs loads function
        from the package. Some day you don't use some feature in your emacs,
        sometimes you use, and Emacs grows and loads the packages when you
        happen to need them. No need to use `require' to have it all at once.

        Now, if you read carefully the *installation* section from every
        package and prefer copying the autoload setup instead, you will
        have the most optimized way to install the package to your .emacs.
        If some package doesn't have autoload choice, complain immediately
        to the Author. The package writer should have thought the autoload
        possibility too. There may also be a note that package can't be
        autoloaded, so in that case there is no other possibility that to
        `require' it. For even more slicker and faster Emacs startup
        sequence, see package *TinyLoad* which you can uset to optimise
        lisp file loadings even more.

    4.3 Customizing packages

        New Emacs releases 19.34+ come with the package *defcustom.el*
        bundled. If you have limited lisp skills or if you want an
        easy interface to packages' variables, then you can customize
        the modules. The *group* is completed when you press `tab'
        key:

            M-x customize-group RET group RET

5.0 Appendix A - Win32 and Unix beginners

    5.1 Prompt syntaxes

        If you're just starting to use Windows or have never heard of Unix,
        here is a short course of the terms and lingo you see all the time
        in the documentation:

            %       MEANS: the command prompt where your cursor is
            $       MEANS: the command prompt as above, just different shell
            >       MEANS: the command prompt as above, again some other shell

    5.2 Dos and Unix command equivalences

        The shell (DOS in Win32) where you type the command does not usually
        matter, but the command you see may not be available in Win32. A crash
        course would be:

            Unix    In Windows
            -----   ------------------------------------------------------
            cp      MEANS  "copy" command
            mv      MEANS  move, which is combination of "copy" and "del"
            ls      MEANS  list, which is "dir"
            rm      MEANS  remove, which is "del"
            ln      MEANS  link, Sorry, you're out of luck in Win32.
                           --> do a complete tree or file "copy" to destination.
            chmod   MEANS  change modes, ignore these in Win32
            mkdir   MEANS  make directory, "md"
            --------------------------------------------------------------

        Here is an example of one instruction, similar to what you can expect.
        The explanation has been "opened" for you to the right hand in
        double quotes.

            % cp file1.txt file2.txt    "Copy file1.txt to file2.txt"

    5.3 Calling perl programs

        In Win32, the perl file (.pl) must be called differently that in Unix.
        In Unix you must make the files executable first, then just type their
        names to run them.

            % chmod +x bin/*        "Make all files in bin/* executable"
            % cd /bin
            % ./makefile.pl --help  "Run the perl script t2html.pl in bin/"

        In Windows, there is no such command as `chmod' and Windows does
        not know that perl scripts are runnable programs. You must prepend
        the perl interpreter in front of every call an possibly add `-S' to
        instruct to search the script along your PATH variable. The
        following calls would also work in any environment:

            dos> perl t2html.pl --help         (Notice "perl" at front)
            dos> perl -S t2html.pl --help      (If you put the script along PATH)

    5.4 Changing environment settings

        The environment variables in Unix are prefixed with dollar and
        written in all caps, like talking about $PATH. Read it like this:

            % echo $PATH         (in Unix, display variable's content)
            dos> echo %PATH%     (same in Win32 dos prompt)

        If you're instructed to change any environment variables, you must
        open the `c:\autoexec.bat' in Win9x with some text editor and
        modify the contents. In WinNT/2000 you must edit the start =>
        Control Panel => System => Environment. Windows Millennium uses that
        too. Reboot after changes to make windows star using the new settings.
        WinNT/2000 is smarter, press "Apply" button in "Environment" dialog
        and you're all set to proceed.

6.0 Appendix B - Procmail project files

        Procmail development has been moved to sourceforge
        projects: pm-lib and pm-doc.

7.0 Appendix C - Perl project files

        Perl development has been moved to sourceforge under
        projects: perl-text2html, perl-webget, perl-dyndns, cvs-tools.

8.0 Appendix D - Other projects

        Javascript module library is under sourceforge project js-tools.

End of file
