]> code.delx.au - gnu-emacs-elpa/blob - packages/gnorb/gnorb.texi
Merge commit '0cda39255827f283e7578cd469ae42daad9556a2' from js2-mode
[gnu-emacs-elpa] / packages / gnorb / gnorb.texi
1 \input texinfo @c -*- texinfo -*-
2 @c %**start of header
3 @setfilename ./gnorb.info
4 @settitle Gnorb Manual
5 @documentencoding UTF-8
6 @documentlanguage en
7 @syncodeindex pg cp
8 @c %**end of header
9
10 @dircategory Emacs
11 @direntry
12 * Gnorb: (gnorb). Glue code for Gnus, Org, and BBDB.
13 @end direntry
14
15 @finalout
16 @titlepage
17 @title Gnorb Manual
18 @subtitle for version 1, updated 3 October, 2014
19 @end titlepage
20
21 @ifnottex
22 @node Top
23 @top Gnorb Manual
24 @end ifnottex
25
26 @menu
27 * Introduction::
28 * Installation::
29 * Setup::
30 * Email Tracking::
31 * Restoring Window Layout::
32 * Recent Mails From BBDB Contacts::
33 * BBDB posting styles::
34 * BBDB Org tagging::
35 * Misc BBDB::
36 * Misc Org::
37 * Misc Gnus::
38 * Suggested Keybindings::
39
40 @detailmenu
41 --- The Detailed Node Listing ---
42
43 Email Tracking
44
45 * Basic Usage::
46 * Email-Related Commands::
47 * Trigger Actions::
48 * Viewing Tracked Messages in *Summary* Buffers::
49 * Hinting in Gnus::
50 * Message Attachments::
51 * Registry Usage::
52 * Likely Workflow::
53
54 Misc BBDB
55
56 * Searching for messages from BBDB contacts::
57 * Citing BBDB contacts::
58 * User Options::
59
60 Misc Org
61
62 * Inserting BBDB links::
63 * User Options: User Optionsx.
64
65 Misc Gnus
66
67 * Viewing Org headlines relevant to a message::
68 * User Options: User Optionsxx.
69 @end detailmenu
70 @end menu
71
72 @node Introduction
73 @chapter Introduction
74
75 Gnorb provides glue code between the Gnus, Org, and BBDB packages.
76 It's aimed at supporting email-based project management, and generally
77 making it easier to keep track of email communication.
78
79 Much of the code consists of single-use convenience functions, but
80 tracking email conversations with Org requires is more complicated,
81 and requires a bit of setup.
82
83 Gnorb can be used in a modular fashion, by selectively loading the
84 files ``gnorb-org'', ``gnorb-gnus'' or ``gnorb-bbdb'' instead of plain old
85 ``gnorb''. The package as a whole is rather Org-centric, though, and it
86 won't do much of interest without ``gnorb-org''.
87
88 This means that Gnorb doesn't have hard requirements to any of the
89 three base libraries. For the libraries you are using, however, you'll
90 get best results from using the most recent stable version (yes, that
91 means BBDB 3). Some of the features in Gnorb only work with
92 development versions of these libraries (those cases are noted below).
93
94 @node Installation
95 @chapter Installation
96
97 Gnorb is best installed via the Elpa package manager -- look for it in
98 `list-packages'.
99
100 You can also clone the source code from
101 @uref{https://github.com/girzel/gnorb}, and put the ``gnorb'' directory on your
102 load-path. The Github site is also a good place to report bugs and
103 other issues.
104
105 @node Setup
106 @chapter Setup
107
108 Loading ``gnorb'' will make the basic functions available. Using Gnorb
109 for email tracking takes a bit more setup, however:
110
111 @enumerate
112 @item
113 Email tracking is done via the Gnus registry, so that must be
114 activated with `gnus-registry-initialize'.
115 @item
116 It also requires the org-id package to be loaded, and
117 `org-id-track-globally' set to t (that's the default value, so
118 simply loading the package should be enough).
119 @item
120 Add a nngnorb entry to your `gnus-secondary-select-methods'
121 variable. It will look like (nngnorb ``Server name''). This does
122 nothing but provide a place to hang nnir searches.
123 @item
124 Then put a call to `gnorb-tracking-initialize' in your init files,
125 at some point after the Gnus registry is initialized.
126 @item
127 If you're not using a local archive method for saving your sent
128 messages (ie you're using IMAP), you'll also need to tell Gnorb
129 where to find your sent messages. Set the variable
130 `gnorb-gnus-sent-groups' to a list of strings; each string should
131 indicate a fully-qualified group name, eg ``nnimap+SERVER:GROUP''.
132 @end enumerate
133
134 Lastly, Gnorb doesn't bind any keys by default; see the @ref{Suggested Keybindings,Suggested
135 Keybindings} section below for possibilities.
136
137 @node Email Tracking
138 @chapter Email Tracking
139
140 The most interesting thing Gnorb does is using Org headings to track
141 email conversations. This can mean anything from reminding yourself to
142 write to your mother, to conducting delicate business negotiations
143 over email, to running an email-based bug tracker.
144
145 Gnorb assists in this process by using the Gnus registry to track
146 correspondences between emails and Org headings -- specifically,
147 message IDs are associated with Org heading ids. As a conversation
148 develops, messages are collected on a heading (and/or its children).
149 You can compose new messages directly from the Org heading, and Gnorb
150 will automatically associate your sent message with the conversation.
151 You can open Gnus *Summary* buffers holding all the messages
152 associated with an Org subtree, and reply from there -- these groups
153 can be made persistent, if you like. When you receive new messages
154 relevant to a conversation, Gnorb will notice them and prompt you to
155 associate them with the appropriate Org heading. Attachments on
156 incoming messages can be automatically saved as attachments on Org
157 headings, using org-attach.
158
159 In general, the goal is to keep track of whole conversations, reduce
160 friction when moving between Gnus and Org, and keep you in the Org
161 agenda rather than in Gnus.
162 @menu
163 * Basic Usage::
164 * Email-Related Commands::
165 * Trigger Actions::
166 * Viewing Tracked Messages in *Summary* Buffers::
167 * Hinting in Gnus::
168 * Message Attachments::
169 * Registry Usage::
170 * Likely Workflow::
171 @end menu
172
173 @node Basic Usage
174 @section Basic Usage
175
176 The following sections might be a bit confusing to read if you haven't
177 actually tried using Gnorb. If you don't want to dive in all the way
178 just yet, you can just dabble your toes. First set up email tracking
179 as specified in @ref{Setup,Setup}, then do the following:
180
181 @enumerate
182 @item
183 Add ``%ug'' somewhere appropriate in your `gnus-summary-line-format'
184 variable.
185 @item
186 If you don't use a local archive method, add your sent message
187 groups to `gnorb-gnus-sent-groups' (see the docstring).
188 @item
189 Use Org capture from Gnus summary buffers to create reminders for
190 emails you need to reply to.
191 @item
192 Reply to those emails by pressing ``C-c t'' on the TODO heading in
193 either the Agenda, or in regular Org files.
194 @item
195 If you ever get confused about what's associated with an Org
196 heading, press ``C-c v'' on the heading (works in either the Agenda,
197 or regular Org files).
198 @end enumerate
199
200 That should be enough to get started.
201
202 @node Email-Related Commands
203 @section Email-Related Commands
204
205 Email tracking starts in one of three ways:
206
207 @enumerate
208 @item
209 With an Org heading that represents an email TODO. Call
210 `gnorb-org-handle-mail' (see below) on the heading to compose a new
211 message, and start the tracking process.
212 @item
213 By calling org-capture on a received message. Any heading captured
214 from a message will automatically be associated with that message.
215 @item
216 By calling `gnorb-gnus-outgoing-do-todo' in a message composition
217 buffer -- see below.
218 @end enumerate
219
220 There are three main email-related commands:
221
222 @enumerate
223 @item
224 `gnorb-org-handle-mail' is called on an Org heading to compose a
225 new message. By default, this will begin a reply to the most recent
226 message in the conversation. If there are no associated messages to
227 reply to (or you call the function with a single prefix arg), Gnorb
228 will look for mailto: or bbdb: links in the heading, and compose a
229 new message to them.
230
231 Calling the function with a double prefix arg will ignore all
232 associated messages and links, and compose a blank message.
233
234 Once sent, the message will be associated with the Org heading, and
235 you'll be brought back to the heading and asked to trigger an
236 action on it.
237
238 `gnorb-email-subtree' is an alternative entry-point to
239 `gnorb-org-handle-mail'. It does the same thing as the latter, but
240 first exports the body of the subtree as either text or a file,
241 then inserts the text into the message body, or attaches the file
242 to the message, respectively.
243 @item
244 `gnorb-gnus-incoming-do-todo' is called on a message in a Gnus
245 *Summary* buffer. You'll be prompted for an Org heading, taken to
246 that heading, and asked to trigger an action on it.
247 @item
248 `gnorb-gnus-outgoing-do-todo' is called in message mode, while
249 composing a new message.
250
251 If called without a prefix arg, a new Org heading will be created
252 after the message is sent, and the sent message associated with it.
253 The new heading will be created as a capture heading, using the
254 template specified by the `gnorb-gnus-new-todo-capture-key' option.
255
256 If you call this function with a single prefix arg, you'll be
257 prompted to choose an existing Org heading instead. After the the
258 message is sent, you'll be taken to that heading and prompted to
259 trigger an action on it.
260
261 If you've called this function, and then realize you've associated
262 the message with the wrong TODO, call it again with a double prefix
263 to clear all associations.
264
265 It's also possible to call this function *after* a message is sent,
266 in case you forgot. Gnorb saves information about the most recently
267 sent message for this purpose.
268 @end enumerate
269
270 Because these three commands all express a similar intent, but are
271 called in different modes, it can make sense to give each of them the
272 same keybinding in the keymaps for Org mode, Gnus summary mode, and
273 Message mode.
274
275 An additional convenience command is available for use in Gnus summary
276 buffers: `gnorb-gnus-quick-reply'. If you don't want to go through the
277 whole round trip of triggering an action and then starting a new
278 reply, call this command on an incoming message to associate it with a
279 heading, start a reply, and associate your reply with the same
280 heading.
281
282 @node Trigger Actions
283 @section Trigger Actions
284
285 After calling `gnorb-gnus-incoming-do-todo' on a message, or after
286 sending a message associated with an Org heading, you'll be taken to
287 the heading and asked to ``trigger an action'' on it. At the moment
288 there are six different possibilities: triggering a TODO state-change
289 on the heading, taking a note on the heading (both these options will
290 associate the message with the heading), associating the message but
291 doing nothing else, capturing a new Org heading as a sibling to the
292 tracked heading, capturing a new Org heading as a child, and lastly,
293 doing nothing at all.
294
295 More actions may be added in the future; it's also possible to
296 rearrange or delete existing actions, and add your own: see the
297 docstring of `gnorb-org-trigger-actions'.
298
299 @node Viewing Tracked Messages in *Summary* Buffers
300 @section Viewing Tracked Messages in *Summary* Buffers
301
302 Call `gnorb-org-view' on an Org heading to open an nnir summary buffer
303 showing all the messages associated with that heading and child
304 headings (this requires you to have added an nngnorb server to your
305 Gnus backends). A minor mode is in effect, ensuring that any replies
306 you send to messages in this buffer will automatically be associated
307 with the original Org heading. You can also invoke
308 `gnorb-summary-disassociate-message' (``C-c d'') to disassociate the
309 message with the Org heading.
310
311 If you call `gnorb-org-view' with a prefix argument, the search group
312 will be made persistent across Gnus sessions. You can re-run the
313 search and update the group contents by hitting ``M-g'' on the group in
314 the Gnus *Group* buffer.
315
316 As a bonus, it's possible to go into Gnus' *Server* buffer, find the
317 line specifying your nngnorb server, and hit ``G'' (aka
318 `gnus-group-make-nnir-group'). At the query prompt, enter an Org-style
319 tags-todo Agenda query string (eg ``+work-computer'', or what have you).
320 Gnorb will find all headings matching this query, scan their subtrees
321 for gnus links, and then give you a Summary buffer containing all the
322 linked messages. This is dog-slow at the moment; it will get faster.
323
324 @node Hinting in Gnus
325 @section Hinting in Gnus
326
327 When you receive new mails that might be relevant to existing Org
328 TODOs, Gnorb can alert you to that fact. When
329 `gnorb-gnus-hint-relevant-article' is t (the default), Gnorb will
330 display a message in the minibuffer when opening potentially relevant
331 messages. You can then use `gnorb-gnus-incoming-to-todo' to trigger an
332 action on the relevant TODO.
333
334 This hinting can happen in the Gnus summary buffer as well. If you use
335 the escape indicated by `gnorb-gnus-summary-mark-format-letter`` as
336 part of your `gnus-summary-line-format', articles that may be relevant
337 to TODOs will be marked with a special character in the Summary
338 buffer, as determined by `gnorb-gnus-summary-mark'. By default, the
339 format letter is ``g'' (meaning it is used as ``%ug'' in the format line),
340 and the mark is ``&'' for messages that are already tracked, and ``ยก'' for
341 messages that may be relevant.
342
343 @node Message Attachments
344 @section Message Attachments
345
346 Gnorb simplifies the handling of attachments that you receive in
347 emails. When you call `gnorb-gnus-incoming-do-todo' on a message,
348 you'll be prompted to re-attach the email's attachments onto the Org
349 heading, using the org-attach library.
350
351 You can also do this as part of the capture process. Set the
352 new :gnus-attachments key to ``t'' in a capture template that you use on
353 mail messages, and you'll be queried to re-attach the message's
354 attachments onto the newly-captured heading. Or set
355 `gnorb-gnus-capture-always-attach' to ``t'' to have Gnorb do this for
356 all capture templates.
357
358 You can also do this using the regular system of MIME commands,
359 without invoking the email tracking process. See @ref{Suggested Keybindings,Suggested
360 Keybindings}, below.
361
362 The same process works in reverse: when you send a message from an Org
363 heading using `gnorb-org-handle-mail', Gnorb will ask if you want to
364 attach the files in the heading's org-attach directory to the outgoing
365 message.
366
367 @node Registry Usage
368 @section Registry Usage
369
370 You can see how many associations you've got stored in the registry by
371 calling `gnorb-report-tracking-usage'. This will pop up a buffer
372 showing how much of the registry you're using, and offering
373 keybindings for `gnorb-flush-dead-associations', to help Gnorb clean
374 up after itself.
375
376 @node Likely Workflow
377 @section Likely Workflow
378
379 You receive an email from Jimmy, who wants to rent a room in your
380 house. ``I'll respond to this later,'' you think.
381
382 You capture an Org TODO from the email, call it ``Jimmy renting a
383 room'', and give it a REPLY keyword. Gnorb quietly records the
384 correspondence between the email and the TODO, using the Gnus
385 registry.
386
387 The next day, looking at your Agenda, you see the TODO and decide to
388 respond to the email. You call `gnorb-org-handle-mail' on the heading,
389 and Gnorb opens Jimmy's email and starts a reply to it.
390
391 You tell Jimmy the room's available in March, and send the message.
392 Gnorb takes you back to the heading, and asks you to trigger an action
393 on it. You choose ``todo state'', and change the heading keyword to
394 WAIT.
395
396 Two days later, Jimmy replies to your message, saying that March is
397 perfect. When you open his response, Gnorb politely reminds you that
398 the message is relevant to an existing TODO. You call
399 `gnorb-gnus-incoming-do-todo' on the message, and are again taken to
400 the TODO and asked to trigger an action. Again you choose ``todo
401 state'', and change the heading keyword back to REPLY.
402
403 You get another email, from Samantha, warning you not to rent the room
404 to Jimmy. She even attaches a picture of a room in her house, as it
405 looked after Jimmy had stayed there for six months. It's bad. You call
406 `gnorb-gnus-incoming-do-todo' on her message, and pick the ``Jimmy
407 renting a room'' heading. This time, you choose ``take note'' as the
408 trigger action, and make a brief note about how bad that room looked.
409 Gnorb asks if you'd like to attach the picture to the Org heading. You
410 decide you will.
411
412 Now it's time to write to Jimmy and say something noncommittal.
413 Calling `gnorb-org-handle-mail' on the heading would respond to
414 Samantha's email, the most recent of the associated messages, which
415 isn't what you want. Instead you call `gnorb-org-view' on the heading,
416 which opens up a Gnus *Summary* buffer containing all four messages:
417 Jimmy's first, your response, his response to that, and Samantha's
418 message. You pick Jimmy's second email, and reply to it normally.
419 Gnorb asks if you'd like to send the picture of the room as an
420 attachment. You would not. When you send the reply Gnorb tracks that
421 as well, and does the ``trigger an action'' trick again.
422
423 In this way Gnorb helps you manage an entire conversation, possibly
424 with multiple threads and multiple participants. Mostly all you need
425 to do is call `gnorb-gnus-incoming-do-todo' on newly-received
426 messages, and `gnorb-org-handle-mail' on the heading when it's time to
427 compose a new reply.
428
429 @node Restoring Window Layout
430 @chapter Restoring Window Layout
431
432 Many Gnorb functions alter the window layout and value of point. In
433 most of these cases, you can restore the previous layout using the
434 interactive function `gnorb-restore-layout'.
435
436 @node Recent Mails From BBDB Contacts
437 @chapter Recent Mails From BBDB Contacts
438
439 If you're using a recent git version of BBDB (circa mid-May 2014 or
440 later), you can give your BBDB contacts a special field which will
441 collect links to recent emails from that contact. The default name of
442 the field is ``messages'', but you can customize that name using the
443 `gnorb-bbdb-messages-field' option.
444
445 Gnorb will not collect links by default: you need to call
446 `gnorb-bbdb-open-link' on a contact once to start the process.
447 Thereafter, opening mails from that contact will store a link to the
448 message.
449
450 Once some links are stored, `gnorb-bbdb-open-link' will open them: Use
451 a prefix arg to the function call to select particular messages to
452 open. There are several options controlling how all this works; see
453 the gnorb-bbdb user options section below for details.
454
455 @node BBDB posting styles
456 @chapter BBDB posting styles
457
458 Gnorb comes with a BBDB posting-style system, inspired by (copied
459 from) gnus-posting-styles. You can specify how messages are composed
460 to specific contacts, by matching on contact field values (the same
461 way gnus-posting-styles matches on group names). See the docstring of
462 `gnorb-bbdb-posting-styles' for details.
463
464 In order not to be too intrusive, Gnorb doesn't alter the behavior of
465 `bbdb-mail', the usual mail-composition function. Instead it provides
466 an alternate `gnorb-bbdb-mail', which does exactly the same thing, but
467 first processes the new mail according to `gnorb-bbdb-posting-styles'.
468 If you want to use this feature regularly, you can remap `bbdb-mail'
469 to `gnorb-bbdb-mail' in the `bbdb-mode-map'.
470
471 @node BBDB Org tagging
472 @chapter BBDB Org tagging
473
474 BBDB contacts can be tagged with the same tags you use in your Org
475 files. This allows you to pop up a *BBDB* buffer alongside your Org
476 Agenda when searching for certain tags. This can happen automatically
477 for all Org tags-todo searches, if you set the option
478 `gnorb-org-agenda-popup-bbdb' to t. Or you can do it manually, by
479 calling the command of the same name. This command only shows TODOs by
480 default: use a prefix argument to show all tagged headings.
481
482 Tags are stored in an xfield named org-tags, by default. You can
483 customize the name of this field using `gnorb-bbdb-org-tag-field'.
484
485 @node Misc BBDB
486 @chapter Misc BBDB
487
488 @menu
489 * Searching for messages from BBDB contacts::
490 * Citing BBDB contacts::
491 * User Options::
492 @end menu
493
494 @node Searching for messages from BBDB contacts
495 @section Searching for messages from BBDB contacts
496
497 Call `gnorb-bbdb-mail-search' to search for all mail messages from the
498 record(s) displayed. Currently supports the notmuch, mairix, and
499 namazu search backends; set `gnorb-gnus-mail-search-backend' to one of
500 those symbol values.
501
502 @node Citing BBDB contacts
503 @section Citing BBDB contacts
504
505 Calling `gnorb-bbdb-cite-contact' will prompt for a BBDB record and
506 insert a string of the type ``Bob Smith <bob@@smith.com>''.
507
508 @node User Options
509 @section User Options
510
511 @table @samp
512 @item `gnorb-bbdb-org-tag-field
513 The name of the BBDB xfield, as a
514 symbol, that holds Org-related tags. Specified as a string with
515 the ``:'' separator between tags, same as for Org headings.
516 Defaults to org-tag.
517 @item `gnorb-bbdb-messages-field'
518 The name of the BBDB xfield that
519 holds links to recently-received messages from this contact.
520 Defaults to `messages.
521 @item `gnorb-bbdb-collect-N-messages'
522 Collect at most this many links
523 to messages from this contact. Defaults to 5.
524 @item `gnorb-bbdb-define-recent'
525 What does ``recently-received'' mean?
526 Possible values are the symbols seen and received. When set to
527 seen, the most recently-opened messages are collected. When set
528 to received, the most recently-received (by Date header) messages
529 are collected. Defaults to seen.
530 @item `gnorb-bbdb-message-link-format-multi'
531 How is a single message's
532 link formatted in the multi-line BBDB layout format? Defaults to
533 ``%:count. %D: %:subject'' (see the docstring for details).
534 @item ` gnorb-bbdb-message-link-format-one'
535 How is a single message's
536 link formatted in the one-line BBDB layout format? Defaults to
537 nil (see the docstring for details).
538 @item `gnorb-bbdb-posting-styles'
539 Styles to use for influencing the
540 format of mails composed to the BBDB record(s) under point (see
541 the docstring for details).
542 @end table
543
544 @node Misc Org
545 @chapter Misc Org
546
547 @menu
548 * Inserting BBDB links::
549 * User Options: User Optionsx.
550 @end menu
551
552 @node Inserting BBDB links
553 @section Inserting BBDB links
554
555 Calling `gnorb-org-contact-link' will prompt for a BBDB record and
556 insert an Org link to that record at point.
557
558 @node User Optionsx
559 @section User Options
560
561 @table @samp
562 @item `gnorb-org-after-message-setup-hook'
563 Hook run in a message buffer
564 after setting up the message, from `gnorb-org-handle-mail' or
565 `gnorb-org-email-subtree'.
566 @item `gnorb-org-trigger-actions'
567 List of potential actions that can be
568 taken on headings after a message is sent. See docstring for
569 details.
570 @item `gnorb-org-mail-scan-scope'
571 The number of paragraphs to scan for
572 mail-related links. This comes into play when calling
573 `gnorb-org-handle-mail' on a heading with no associated messages,
574 or when `gnorb-org-handle-mail' is called with a prefix arg.
575 @item `gnorb-org-find-candidates-match'
576 When searching all Org files
577 for headings to collect messages from, this option can limit
578 which headings are searched. It is used as the second argument to
579 a call to `org-map-entries', and has the same syntax as that used
580 in an agenda tags view.
581 @item `gnorb-org-email-subtree-text-parameters'
582 A plist of export
583 parameters corresponding to the EXT-PLIST argument to the export
584 functions, for use when exporting to text.
585 @item `gnorb-org-email-subtree-file-parameters'
586 A plist of export
587 parameters corresponding to the EXT-PLIST argument to the export
588 functions, for use when exporting to a file.
589 @item `gnorb-org-email-subtree-text-options'
590 A list of ts and nils
591 corresponding to Org's export options, to be used when exporting
592 to text. The options, in order, are async, subtreep,
593 visible-only, and body-only.
594 @item `gnorb-org-email-subtree-file-options'
595 A list of ts and nils
596 corresponding to Org's export options, to be used when exporting
597 to a file. The options, in order, are async, subtreep,
598 visible-only, and body-only.
599 @item `gnorb-org-export-extensions'
600 Correspondence between export
601 backends and their respective (usual) file extensions.
602 @item `gnorb-org-capture-collect-link-p'
603 When this is set to t, the
604 capture process will always store a link to the Gnus message or
605 BBDB record under point, even when the link isn't part of the
606 capture template. It can then be added to the captured heading
607 with org-insert-link, as usual.
608 @item `gnorb-org-agenda-popup-bbdb'
609 Set to ``t'' to automatically pop up
610 the BBDB buffer displaying records corresponding to the Org
611 Agenda tags search underway. If this is nil you can always do it
612 manually with the command of the same name.
613 @item `gnorb-org-bbdb-popup-layout'
614 Controls the layout of the
615 Agenda-related BBDB popup, takes the same values as
616 bbdb-pop-up-layout.
617 @end table
618
619 @node Misc Gnus
620 @chapter Misc Gnus
621
622 @menu
623 * Viewing Org headlines relevant to a message::
624 * User Options: User Optionsxx.
625 @end menu
626
627 @node Viewing Org headlines relevant to a message
628 @section Viewing Org headlines relevant to a message
629
630 Call `gnorb-gnus-view' on a message that is associated with an Org
631 heading to jump to that heading.
632
633 @node User Optionsxx
634 @section User Options
635
636 @table @samp
637 @item `gnorb-gnus-mail-search-backend'
638 Specifies the search backend
639 that you use for searching mails. Currently supports notmuch,
640 mairix, and namazu: set this option to one of those symbols.
641 @item `gnorb-gnus-capture-always-attach'
642 Treat all capture templates as
643 if they had the :gnus-attachments key set to ``t''. This only has
644 any effect if you're capturing from a Gnus summary or article
645 buffer.
646 @item `gnorb-trigger-todo-default'
647 Set to either `note or `todo to tell
648 `gnorb-gnus-incoming-do-todo' what to do by default. You can
649 reach the non-default behavior by calling that function with a
650 prefix argument. Alternately, set to `prompt to always prompt for
651 the appropriate action.
652 @item `gnorb-gnus-trigger-refile-targets'
653 If you use
654 `gnorb-gnus-incoming-do-todo' on an incoming message, Gnorb will
655 try to locate a TODO heading that's relevant to that message. If
656 it can't, it will prompt you for one, using the refile interface.
657 This option will be used as the value of `org-refile-targets'
658 during that process: see the docstring of `org-refile-targets'
659 for the appropriate syntax.
660 @item `gnorb-gnus-new-todo-capture-key'
661 Set this to a single-character
662 string pointing at an Org capture template to use when creating
663 TODOs from outgoing messages. The template is a regular capture
664 template, with a few exceptions. If Gnus helps you archive
665 outgoing messages (ie you have `gnus-message-archive-group' set
666 to something, and your outgoing messages have a ``Fcc'' header), a
667 link to that message will be made, and you'll be able to use all
668 the escapes related to gnus messages. If you don't archive
669 outgoing messages, you'll still be able to use the %:subject,
670 %:to, %:toname, %:toaddress, and %:date escapes in the capture
671 template.
672 @item `gnorb-gnus-hint-relevant-article'
673 Set to ``t'' (the default) to
674 have Gnorb give you a hint in the minibuffer when opening
675 messages that might be relevant to existing Org TODOs.
676 @item `gnorb-gnus-summary-mark-format-letter'
677 The formatting letter to
678 use as part of your `gnus-summary-line-format', to indicate
679 messages which might be relevant to Org TODOs. Defaults to ``g'',
680 meaning it should be used as ``%ug'' in the format line.
681 @item `gnorb-gnus-summary-mark'
682 The mark used to indicate potentially
683 relevant messages in the Summary buffer, when
684 `gnorb-gnus-summary-mark-format-letter' is present in the format
685 line. Defaults to ``ยก''.
686 @item `gnorb-gnus-summary-tracked-mark'
687 The mark used to indicate
688 already-tracked messages in the Summary buffer, when
689 `gnorb-gnus-summary-mark-format-letter' is present in the format
690 line. Defaults to ``&''.
691 @end table
692
693 @node Suggested Keybindings
694 @chapter Suggested Keybindings
695
696 @lisp
697 (eval-after-load "gnorb-bbdb"
698 '(progn
699 (define-key bbdb-mode-map (kbd "O") 'gnorb-bbdb-tag-agenda)
700 (define-key bbdb-mode-map (kbd "S") 'gnorb-bbdb-mail-search)
701 (define-key bbdb-mode-map [remap bbdb-mail] 'gnorb-bbdb-mail)
702 (define-key bbdb-mode-map (kbd "l") 'gnorb-bbdb-open-link)
703 (global-set-key (kbd "C-c C") 'gnorb-bbdb-cite-contact)))
704
705 (eval-after-load "gnorb-org"
706 '(progn
707 (org-defkey org-mode-map (kbd "C-c C") 'gnorb-org-contact-link)
708 (org-defkey org-mode-map (kbd "C-c t") 'gnorb-org-handle-mail)
709 (org-defkey org-mode-map (kbd "C-c e") 'gnorb-org-view)
710 (org-defkey org-mode-map (kbd "C-c E") 'gnorb-org-email-subtree)
711 (org-defkey org-mode-map (kbd "C-c V") 'gnorb-org-popup-bbdb)
712 (setq gnorb-org-agenda-popup-bbdb t)
713 (eval-after-load "org-agenda"
714 '(progn (org-defkey org-agenda-mode-map (kbd "C-c t") 'gnorb-org-handle-mail)
715 (org-defkey org-agenda-mode-map (kbd "C-c v") 'gnorb-org-popup-bbdb)
716 (org-defkey org-agenda-mode-map (kbd "V") 'gnorb-org-view)))))
717
718 (eval-after-load "gnorb-gnus"
719 '(progn
720 (define-key gnus-summary-mime-map "a" 'gnorb-gnus-article-org-attach)
721 (define-key gnus-summary-mode-map (kbd "C-c t") 'gnorb-gnus-incoming-do-todo)
722 (push '("attach to org heading" . gnorb-gnus-mime-org-attach)
723 gnus-mime-action-alist)
724 ;; The only way to add mime button command keys is by redefining
725 ;; gnus-mime-button-map, possibly not ideal. Ideal would be a
726 ;; setter function in gnus itself.
727 (push '(gnorb-gnus-mime-org-attach "a" "Attach to Org heading")
728 gnus-mime-button-commands)
729 (setq gnus-mime-button-map
730 (let ((map (make-sparse-keymap)))
731 (define-key map gnus-mouse-2 'gnus-article-push-button)
732 (define-key map gnus-down-mouse-3 'gnus-mime-button-menu)
733 (dolist (c gnus-mime-button-commands)
734 (define-key map (cadr c) (car c)))
735 map))))
736
737 (eval-after-load "message"
738 '(progn
739 (define-key message-mode-map (kbd "C-c t") 'gnorb-gnus-outgoing-do-todo)))
740 @end lisp
741
742 @bye
743 @c Local Variables:
744 @c mode: texinfo
745 @c TeX-master: t
746 @c End: