emacs interface for darcs (http://joyful.com/darcsum)

root / perfect-darcs-mode.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
(I wrote this in late 2004 on request of forcer, being unsatisfied
with the state of Emacs modes for darcs at that time.  My additions of
March 2005 are added in parentheses. --Christian Neukirchen)

The "perfect" darcs-mode
========================

This is a short specification of features I'd like to have in a future
Emacs darcs-mode.


The Edit/Update-Log cycle
-------------------------

darcs-mode should encourage the Arch style of writing the log message
as you go along.  This is known as the Edit/Update-Log cycle and
works like this (Xtla keybindings are shown):

- Edit (file status in modeline, unchanged/edited)
- Add change entry (C-x T a)
    ChangeLog style,  * [filename]: ([function]) ...
    This will use the `add-to-changelog "intelligence"' that combines
    changes of the same file etc.
    The buffer will be passed to darcs record using --logfile.
- Repeat

You will do this all day, so it should be *very* convenient and
streamlined to do.  (Note that the Update-Log step is not enforced;
people that don't like it can simply write the message just before
recording.)

When you are finished with editing you'll do this:

- Review changes (C-x T =, darcs diff)
- Clean up patch (RET to jump in diff)
- Possibly mark only certain patches to record (m in diff, darcsum
  style)
- Check record message (c in diff)
- Commit (C-c C-c in log buffer)

Now you can go along making the next patch.


Exploring history
-----------------

darcs-mode should provide a good patch browser in style of Xtla's
tla-revision or darcs.cgi's patch view.

You'll see a list of patches (darcs changes); one line per patch.  By
tapping RET on a patch, it's summary will appear (full record message,
changed file statistics).  Pressing d or = will show the patch as a
diff in a separate buffer.

The use of color and providing good search features will make this
mode especially useful.  (Search by date, by changed files, by record
message etc... Highlight tags, show tags only, group patches by
author, by date ("What did we do this week?"))

The patch browser will also be used to mark and send patches.

Being able to select multiple patches and look at their unification
would be very useful too (tla delta, darcs diff --from... --to...).


Exploring the inventory
-----------------------

A file browser like darcs.cgi's file view or tla-inventory is needed
to see which files have changed.  It should be possible to see a patch
list (in the patch browser) for each file (darcs changes file...).

Annotation of files (with hyperlinks to the patches) like vc-annotate
would be very nice to have too.


Other features
--------------

Provide tight coupling with other Emacs parts, not limited to Gnus and
BBDB.  Emacs lives from its integration.