INSTRUCTIONS FOR COMPILING AND INSTALLING NANO FROM GIT
=======================================================

The latest changes and fixes for GNU nano are available via git, but
building this needs a bit more care than the official tarballs.


Prerequisites
-------------

To successfully compile GNU nano from git, you'll need the following:

    autoconf    (version >= 2.69)
    automake    (version >= 1.14)
    autopoint   (version >= 0.18.3)
    gcc         (version >= 5.0)
    gettext     (version >= 0.18.3)
    git         (version >= 2.7.4)
    groff       (version >= 1.12)
    make        (any version)
    pkg-config  (version >= 0.22)
    texinfo     (version >= 4.0)

You will also need to have the header files for ncurses installed,
from libncurses-dev on Debian, ncurses-devel on Fedora, or similar.

These should all be available in your distro's package manager or
software center, or otherwise on any GNU mirror.


Clone the source
----------------

To obtain the current nano development branch (called 'master'), use the
following command.  It will create in your current working directory a
subdirectory called 'nano' containing a copy of all of the files:

    $ git clone git://git.savannah.gnu.org/nano.git


Generate the configure script
-----------------------------

Once you have the sources in the "nano" directory,

    $ cd nano
    $ ./autogen.sh

This will set up a configure script and a Makefile.in file.


Configure your build
--------------------

To configure your build, run the configure script from the nano source
directory:

    $ ./configure [--add-options-here]


Build and install
-----------------

From the nano source directory, build the code with:

    $ make

Then, once it's done compiling, run:

    $ make install

which should copy various files (i.e. the nano executable, the info and
man pages, and syntax highlighting pattern files) to their appropriate
directories.

If you're installing into the default install directory (/usr/local),
you'll need to run that "make install" command with root privileges.


Problems?
---------

Please submit any bugs you find in the code in git via the bug tracker
on Savannah (https://savannah.gnu.org/bugs/?group=nano).


Contributing something
----------------------

If you have a fix for a bug, or the code for a new or improved feature,
first create a branch off of master:

    $ git checkout -b somename

Then change the code so it does what you want, and commit it together
with your Sign-off:

    $ git commit -as

In the commit message (after the one-line summary) give a rationale
for the change.  With your Signed-off-by you declare that the code is
yours, or that you are free to reuse it, and that you submit it under
the license that covers nano.  Then create a patch (or patches):

    $ git format-patch master

Send that patch (or patches) to <nano-devel@gnu.org>, as an attachment
or with git send-email.

To keep most lines of nano's source code within a width of 80 characters,
a tab size of four should be used.  So in your nanorc file you may want
to include 'set tabsize 4', or you could use -T4 on the command line.
To make git display things as intended, you can do:

    $ git config --local core.pager "less -x1,5"

To see all types that are used in nano's source code colorized as types,
you can add these lines to your ~/.nanorc:

    extendsyntax c color green "\<struct (dirent|option|passwd)\>"
    extendsyntax c color green "\<struct (sigaction|stat|termios)\>"
    extendsyntax c color green "\<struct (timespec|vt_stat|winsize)\>"
    extendsyntax c color green "\<([[:lower:]_]+(struct|type)|va_list)\>"
