aboutsummaryrefslogtreecommitdiffstats
path: root/doc/hacking.txt
diff options
context:
space:
mode:
authorChris Ball <cjb@laptop.org>2010-06-22 15:57:58 -0400
committerChris Ball <cjb@laptop.org>2010-06-22 15:57:58 -0400
commit9763adba687a0e8921187702dd55e9a7083c9db4 (patch)
tree5f2bc55869722d7518b0e61e39b6deebe9dec0f4 /doc/hacking.txt
parent6edc7b6e25b4b59b45e157d9d55816fa9dcfe494 (diff)
parent7755c210fd7003479f60d5699e6f638bcd370fe6 (diff)
downloadbugseverywhere-9763adba687a0e8921187702dd55e9a7083c9db4.tar.gz
Merge from Trevor.
Diffstat (limited to 'doc/hacking.txt')
-rw-r--r--doc/hacking.txt47
1 files changed, 26 insertions, 21 deletions
diff --git a/doc/hacking.txt b/doc/hacking.txt
index 5b075f9..54be7bc 100644
--- a/doc/hacking.txt
+++ b/doc/hacking.txt
@@ -6,15 +6,19 @@ Adding commands
===============
To write a plugin, you simply create a new file in the
-``libbe/commands/`` directory. Take a look at one of the simpler
-plugins (e.g. ``remove.py``) for an example of how that looks, and to
-start getting a feel for the libbe interface.
+:file:`libbe/command/` directory. Take a look at one of the simpler
+plugins (e.g. :mod:`libbe.command.remove`) for an example of how that
+looks, and to start getting a feel for the libbe interface.
-See ``libbe/commands/base.py`` for the definition of the important
-classes ``Option``, ``Argument``, ``Command``, ``InputOutput``,
-``StorageCallbacks``, and ``UserInterface`` classes. You'll be
-subclassing ``Command`` for your command, but all those classes will
-be important.
+See :mod:`libbe.command.base` for the definition of the important
+classes :class:`~libbe.command.base.Option`,
+:class:`~libbe.command.base.Argument`,
+:class:`~libbe.command.base.Command`,
+:class:`~libbe.command.base.InputOutput`,
+:class:`~libbe.command.base.StorageCallbacks`, and
+:class:`~libbe.command.base.UserInterface`. You'll be subclassing
+:class:`~libbe.command.base.Command` for your command, but all those
+classes will be important.
Command completion
@@ -22,21 +26,22 @@ Command completion
BE implements a general framework to make it easy to support command
completion for arbitrary plugins. In order to support this system,
-any of your completable ``Argument()`` instances (in your command's
-``.options`` or ``.args``) should be initialized with some valid
-completion_callback function. Some common cases are defined in
-``libbe.command.util``. If you need more flexibility, see
-``libbe.command.list``'s ``--sort`` option for an example of
-extensions via ``libbe.command.util.Completer``, or write a custom
-completion function from scratch.
+any of your completable :class:`~libbe.command.base.Argument`
+instances (in your command's ``.options`` or ``.args``) should be
+initialized with some valid completion_callback function. Some common
+cases are defined in :mod:`libbe.command.util`. If you need more
+flexibility, see :mod:`libbe.command.list`\'s ``--sort`` option for an
+example of extensions via :class:`libbe.command.util.Completer`, or
+write a custom completion function from scratch.
Adding user interfaces
======================
-Take a look at ``libbe/ui/command_line.py`` for an example. Basically
-you'll need to setup a ``UserInterface`` instance for running commands.
-More details to come after I write an HTML UI...
+Take a look at :mod:`libbe.ui.command_line` for an example.
+Basically you'll need to setup a
+:class:`~libbe.command.base.UserInterface` instance for running
+commands. More details to come after I write an HTML UI...
Testing
@@ -50,11 +55,11 @@ for example:
be$ python test.py libbe.command.merge
-For a definition of "any tests", see ``test.py``'s
+For a definition of "any tests", see :file:`test.py`'s
``add_module_tests()`` function.
Note that you will need to run ``make`` before testing a clean BE
-branch to auto-generate required files like ``libbe/_version.py``.
+branch to auto-generate required files like :file:`libbe/_version.py`.
Profiling
@@ -71,5 +76,5 @@ It's often useful to toss::
import sys, traceback
print >> sys.stderr, '-'*60, '\n', '\n'.join(traceback.format_stack()[-10:])
-into expensive functions (e.g. ``libbe.util.subproc.invoke()``) if
+into expensive functions (e.g. :func:`libbe.util.subproc.invoke`) if
you're not sure why they're being called.