You should also make sure that programs installed by cabal-install are
on your shell's search path.

For instructions on installing a suitable version of Emacs under
Windows, see [below]((#installing-emacs-under-windows).

Non-Windows users need to ensure that the development files for the C
libraries zlib and ncurses are installed (see http://zlib.net and
http://www.gnu.org/software/ncurses/). Your package manager may be
able to install these files for you. For instance, on Debian or Ubuntu
it should suffice to run

apt-get install zlib1g-dev libncurses5-dev

as root to get the correct files installed.

Note on GHC's CPP language extension

Recent versions of Clang's preprocessor don't work well with Haskell.
In order to get some dependencies to build, you may need to set up Cabal
to have GHC use cpphs by default. You can do this by adding

program-default-options
ghc-options: -pgmPcpphs -optP--cpp

to your .cabal/config file. (You must be using cabal >= 1.18. Note
that some packages may not compile with this option set.)

You don't need to set this option to install Agda from the current
development source; Agda.cabal now uses cpphs.

It is also possible (but not necessary) to compile the Emacs mode's files:

agda-mode compile

This can, in some cases, give a noticeable speedup.

WARNING: If you reinstall the Agda mode without recompiling the Emacs
Lisp files, then Emacs may continue using the old compiled files.

(2) Or, you can try to install Agda (including a compiled Emacs mode) by
running the following command:

make install

Configuring the Emacs mode

If you want to you can customise the Emacs mode. Just start Emacs and
type the following:

M-x load-library RET agda2-mode RET
M-x customize-group RET agda2 RET

This is useful if you want to change the Agda search path, in which
case you should change the agda2-include-dirs variable.

If you want some specific settings for the Emacs mode you can add them
to agda2-mode-hook. For instance, if you do not want to use the Agda
input method (for writing various symbols like ∀≥ℕ→π⟦⟧) you can add
the following to your .emacs:

(add-hook 'agda2-mode-hook
'(lambda ()
; If you do not want to use any input method:
(deactivate-input-method)
; (In some versions of Emacs you should use
; inactivate-input-method instead of
; deactivate-input-method.)
; If you want to use the X input method:
(set-input-method "X")))

Note that, on some systems, the Emacs mode changes the default font of
the current frame in order to enable many Unicode symbols to be
displayed. This only works if the right fonts are available, though.
If you want to turn off this feature, then you should customise the
agda2-fontset-name variable.