-*- Mode: Outline -*-

* Documentation

Generally speaking, the code + docstrings + comments should be
documentation enough. I'm hoping so at least. I suppose I really
should fiddle with Texinfo to build an actual ljupdate manual.

* File naming conventions

I'm trying to stay within the confines of 8.3, and to prefix
everything with `lj-'. That realistically leaves us with this
template: lj-12345.el; five `interesting' characters. In some
cases, the `interesting' part is six characters for one reason or
another, mainly that abbreviating didn't quite work nicely with 5
or whatever. In those cases, we lose the hyphen.

* Symbol naming conventions

Basically, here's how it works:

lj-foo: ``external symbol'', a symbol the end-user can be expected
        to frob.

lj--foo: ``internal symbol'', a symbol the end-user should stay
         far, far away from.

ljc-foo: ``compatibility wrapper around usually bundled foo'', for
         instance, ljc-md5 and the like.

* Autoloads v. `require'

Note that, generally speaking, the current code doesn't really use
`require' and `provide' to ensure proper load order; I'm using
autoloads instead. This is because the location of things isn't
really stable at the moment, nor is the file dependency graph, so
I'm going to kick it autoloads style while things take shape and
settle down, and then, when things are rather stable, i'll check
out the file dependencies and add in the appropriate `require'
sexps.

* New protocol handling code: lj-proto.el.

Each lj-FOO.el which implements support for one of the LJ
protocol modes should probably have this line near the top:

(require 'lj-proto) ; higher-level lj protocol handling

Each time an lj-FOO.el is written, lj-proto.el should be modified
to reflect the protocol modes lj-FOO.el implements. For instance,
here is the lj-proto entry for the unsupported getfriendgroups
mode: 

(lj--define-protocol-mode getfriendgroups nil
  '()
  '(frgrp_*_name frgrp_*_sortorder frgrp_*_public frgrp_maxnum))

And here is the entry for the getdaycounts protocol, supported by
lj-entry.el:

(lj--define-protocol-mode getdaycounts 'lj-entry
  '(usejournal)
  '(*-*-*))

So basically, replace the `nil' with the thingy that implements
the mode.

* Integration with other Emacs modes and/or programs

** Integration with the BBDB

This works; just (require 'lj-bbdb).

** Integration with the Emacs Shell

This is a work in progress; see the file lj-shell.el. Potentially
very cool stuff. The function `eshell/lj' is autoloaded, so just
typing "lj -h" at your Eshell prompt should show you what you can
currently do with it.



Local Variables:
End:
