# Doxymacs

Doxymacs is Doxygen + {X}Emacs.

The purpose of the doxymacs project is to create a LISP package that will make using Doxygen from within {X}Emacs easier.

Version 1.8.0, released 2007-06-10, has the following features:

- ability to look up documentation for symbols from {X}Emacs in the browser of your choice.
- easily insert Doxygen style comments into source.
- optionally use an "external" (i.e. written in C) XML parser to speed up building the completion list.
- fontify Doxygen keywords.

Please direct any bug reports or feature requests to the appropriate forum on Doxymacs' SourceForge page.

## Requirements

Doxymacs depends on the following packages:

- W3
- tempo
- version 2.6.13 or greater of libxml2.

Make sure these are properly configured and installed before proceeding.

## Installation

- Use the configure script to configure and build doxymacs:

      $ ./configure
      $ make
      $ make install

  Be sure to put `${datadir}/share/${EMACS}/site-lisp` in your `load-path` in your `.emacs` file, or wherever you configured the .elc files to end up.
  NOTE If you get:

      !! File error (("Cannot open load file" "url"))

  (or something similar) when you do `make`, then set the variable `EMACSLOADPATH`:

      $ EMACSLOADPATH=... make

  where `...` is a colon separated list of directories to seach for packages.
  To byte compile with XEmacs, set the variable `EMACS`:

      $ EMACS=xemacs make

  If you want to avoid byte-compiling altogether:

      $ make ELCFILES=
      $ make install ELCFILES=

  For a complete list of configuration options:

      $ ./configure --help

  If you do not want to run or cannot run `configure` then pre-baked `.el` files are available in the `no-autoconf/` directory; simply copy these to somewhere in your `load-path`.
- Customise the variables `doxymacs-doxygen-root` and `doxymacs-doxygen-tags`. You can customise these via the customisation menu Programming | Tools | Doxymacs.
- (Optional) Customise `doxymacs-doxygen-style`. The default is "JavaDoc". See the Doxygen manual for examples of the three available styles (JavaDoc, Qt and C++).
- To use the external XML parser, set `doxymacs-use-external-xml-parser` to non-nil (can be done via the customisation menu).
- Put `(require 'doxymacs)` in your `.emacs` file.
- Invoke `doxymacs-mode` with `M-x doxymacs-mode`. To have `doxymacs-mode` automatically come up whenever you visit a C/C++ file, put `(add-hook 'c-mode-common-hook'doxymacs-mode)` in your `.emacs`.
- If you want Doxygen keywords fontified use `M-x doxymacs-font-lock`. To do it automatically, add the following to your `.emacs`:

        (defun my-doxymacs-font-lock-hook ()
          (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
              (doxymacs-font-lock)))
        (add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)

  This will add the Doxygen keywords to c-mode and c++-mode only.
- Default key bindings are:
  - `C-c d ?` will look up documentation for the symbol under the point.
  - `C-c d r` will rescan your Doxygen tags file.
  - `C-c d f` will insert a Doxygen comment for the next function.
  - `C-c d i` will insert a Doxygen comment for the current file.
  - `C-c d ;` will insert a Doxygen comment for a member variable on the current line (like `M-;`).
  - `C-c d m` will insert a blank multi-line Doxygen comment.
  - `C-c d s` will insert a blank single-line Doxygen comment.
  - `C-c d @` will insert grouping comments around the current region.

Doxymacs has been tested on and works with:

- GNU Emacs 20.7.1, 21.1.1, 21.2.1, 21.3, 21.4.1.
- XEmacs 21.1 (patch 14), XEmacs 21.4 (patch 4, 5, 6, 17).
- Up to doxygen version 1.4.4

If you have success or failure with other versions of {X}Emacs and doxygen, please let the authors know.

## Links

- Doxymacs SourceForge Project. Go here to request help, submit a patch, or ask for a feature.
- Release 1.8.0 Download it now.
- CVS Repository For bleeding edge people and developers.

Last modified: Sun Jun 10 14:28:09 BST 2007

`$Id: index.html,v 1.13 2007/06/10 13:30:33 ryants Exp $`