(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.) 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.