Merge remember-diary.el into remember.el
[bpt/emacs.git] / doc / misc / remember.texi
CommitLineData
15f3eb73
MO
1\input texinfo @c -*-texinfo-*-
2@c %**start of header
3@setfilename ../../info/remember
4@settitle Remember Manual
5@c %**end of header
6
7@dircategory Emacs
8@direntry
9* Remember: (remember). Simple information manager for Emacs
10@end direntry
11
12@syncodeindex fn cp
13
14@copying
15This manual is for Remember Mode, version 1.9
16
17Copyright @copyright{} 2001, 2004, 2005, 2007 Free Software Foundation, Inc.
18
19@quotation
20Permission is granted to copy, distribute and/or modify this document
21under the terms of the GNU Free Documentation License, Version 1.2
22or any later version published by the Free Software Foundation;
23with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
24Texts. A copy of the license is included in the section entitled ``GNU
25Free Documentation License''.
26@end quotation
27@end copying
28
29@titlepage
30@title Guide to Remember Mode
31@subtitle a simple information manager
32@subtitle for Emacs and XEmacs
33
34@c The following two commands
35@c start the copyright page.
36@page
37@vskip 0pt plus 1filll
38@insertcopying
39@end titlepage
40
41@c So the toc is printed at the start
42@contents
43
44@ifnottex
45@node Top, Preface, (dir), (dir)
46@comment node-name, next, previous, up
47@top Remember
48
49@insertcopying
50@end ifnottex
51
52@menu
53* Preface:: About the documentation.
54* Introduction:: What is Remember Mode?
55* Installation:: How to install Remember.
56* Implementation:: How Remember came into existence.
57* Quick Start:: Get started using Remember.
15f3eb73 58* Function Reference:: Interactive functions in remember.el.
7d3f6f1a
MO
59* Keystrokes:: Keystrokes bound in Remember Mode.
60* Backends:: Backends for saving notes.
15f3eb73
MO
61* GNU Free Documentation License:: The license for this documentation.
62* Concept Index:: Search for terms.
63
64@detailmenu
65 --- The Detailed Node Listing ---
66
67Backends
68
69* Text File:: Saving to a text file.
bec9b2f5 70* Diary:: Saving to a Diary file.
15f3eb73 71* Mailbox:: Saving to a mailbox.
bec9b2f5 72* Org:: Saving to an Org Mode file.
15f3eb73
MO
73
74@end detailmenu
75@end menu
76
77@node Preface, Introduction, Top, Top
78@comment node-name, next, previous, up
79@chapter Preface
80
81This document describes remember-el, which was written by John Wiegley,
82was once maintained by Sacha Chua, and is now maintained by the Emacs
83developers.
84
85This document is a work in progress, and your contribution will be
86greatly appreciated.
87
88@node Introduction, Installation, Preface, Top
89@comment node-name, next, previous, up
90@chapter Introduction
91
92Todo lists, schedules, phone databases... everything we use databases
93for is really just a way to extend the power of our memory, to be able
94to remember what our conscious mind may not currently have access to.
95
51d24a12
MO
96There are many different databases out there---and good ones---which
97this mode is not trying to replace. Rather, it's how that data gets
98there that's the question. Most of the time, we just want to say
99"Remember so-and-so's phone number, or that I have to buy dinner for the
100cats tonight." That's the FACT. How it's stored is really the
101computer's problem. But at this point in time, it's most definitely
102also the user's problem, and sometimes so laboriously so that people
103just let data slip, rather than expend the effort to record it.
15f3eb73
MO
104
105``Remember'' is a mode for remembering data. It uses whatever
106back-end is appropriate to record and correlate the data, but its main
107intention is to allow you to express as @emph{little} structure as
108possible up front. If you later want to express more powerful
109relationships between your data, or state assumptions that were at
110first too implicit to be recognized, you can ``study'' the data later
111and rearrange it. But the initial ``just remember this'' impulse
112should be as close to simply throwing the data at Emacs as possible.
113
114Have you ever noticed that having a laptop to write on doesn't
115@emph{actually} increase the amount of quality material that you turn
116out, in the long run? Perhaps it's because the time we save
117electronically in one way, we're losing electronically in another; the
118tool should never dominate one's focus. As the mystic Faridu'd-Din
119`Attar wrote: ``Be occupied as little as possible with things of the
120outer world but much with things of the inner world; then right action
121will overcome inaction.''
122
123If Emacs could become a more intelligent data store, where brainstorming
124would focus on the @emph{ideas} involved---rather than the structuring
125and format of those ideas, or having to stop your current flow of work
126in order to record them---it would map much more closely to how the mind
127(well, at least mine) works, and hence would eliminate that very
128manual-ness which computers from the very beginning have been championed
129as being able to reduce.
130
131@node Installation, Implementation, Introduction, Top
132@comment node-name, next, previous, up
133@chapter Installation
134
135Installing Remember Mode is as simple as adding the following lines to
136your Emacs configuration file (usually @file{~/.emacs.d/init.el} or
137@file{~/.emacs}).
138
139@lisp
140(add-to-list 'load-path "/path/to/remember")
141(require 'remember)
142@end lisp
143
144@node Implementation, Quick Start, Installation, Top
145@comment node-name, next, previous, up
146@chapter Implementation
147
148Hyperbole, as a data presentation tool, always struck me as being very
149powerful, but it seemed to require a lot of ``front-end'' work before
150that data was really available. The problem with BBDB, or keeping up
151a Bibl-mode file, is that you have to use different functions to
152record the data, and it always takes time to stop what you're doing,
153format the data in the manner expected by that particular data
154interface, and then resume your work.
155
156With ``remember'', you just hit @kbd{M-x remember} (you'd probably
157want to bind this to an easily accessible keystroke, like @kbd{C-x
158M-r}), slam in your text however you like, and then hit @kbd{C-c C-c}.
159It will file the data away for later retrieval, and possibly indexing.
160
bec9b2f5
MO
161Indexing is to data what ``studying'' is in the real world. What you do
162when you study (or lucubrate, for some of us) is to realize certain
15f3eb73
MO
163relationships implicit in the data, so that you can make use of those
164relationships. Expressing that a certain quote you remembered was a
bec9b2f5
MO
165literary quote, and that you want the ability to pull up all quotes of a
166literary nature, is what studying does. This is a more labor intensive
167task than the original remembering of the data, and it's typical in real
168life to set aside a special period of time for doing this work.
15f3eb73
MO
169
170``Remember'' works in the same way. When you enter data, either by
171typing it into a buffer, or using the contents of the selected region,
172it will store that data---unindexed, uninterpreted---in a data pool.
173It will also try to remember as much context information as possible
174(any text properties that were set, where you copied it from, when,
175how, etc). Later, you can walk through your accumulated set of data
176(both organized, and unorganized) and easily begin moving things
177around, and making annotations that will express the full meaning of
178that data, as far as you know it.
179
180Obviously this latter stage is more user-interface intensive, and it
181would be nice if ``remember'' could do it as elegantly as possible,
182rather than requiring a billion keystrokes to reorganize your
183hierarchy. Well, as the future arrives, hopefully experience and user
184feedback will help to make this as intuitive a tool as possible.
185
7d3f6f1a 186@node Quick Start, Function Reference, Implementation, Top
15f3eb73
MO
187@comment node-name, next, previous, up
188@chapter Quick Start
189
190@itemize
191
192@item
193Load @file{remember.el}.
194
195@item
196Type @kbd{M-x remember}. The @samp{*Remember*} buffer should be
197displayed.
198
199@item
200Type in what you want to remember. The first line will be treated as
201the headline, and the rest of the buffer will contain the body of the
202note.
203
204@item
6159985a 205Type @kbd{C-c C-c} (@code{remember-finalize}) to save the note and close
15f3eb73
MO
206the @samp{*Remember*} buffer.
207@end itemize
208
6159985a 209By default, @code{remember-finalize} saves the note in @file{~/.notes}.
15f3eb73
MO
210You can edit it now to see the remembered and timestamped note. You
211can edit this file however you want. New entries will always be added
212to the end.
213
214To remember a region of text, use the universal prefix. @kbd{C-u M-x
215remember} displays a @samp{*Remember*} buffer with the region as the
216initial contents.
217
218As a simple beginning, you can start by using the Text File backend,
219keeping your @file{~/.notes} file in outline-mode format, with a final
220entry called @samp{* Raw data}. Remembered data will be added to the
221end of the file. Every so often, you can move the data that gets
222appended there into other files, or reorganize your document.
223
224You can also store remembered data in other backends.
225(@pxref{Backends})
226
227Here is one way to map the remember functions in your @file{.emacs} to
228very accessible keystrokes facilities using the mode:
229
230@lisp
231(autoload 'remember ``remember'' nil t)
232(autoload 'remember-region ``remember'' nil t)
233
234(define-key global-map (kbd "<f9> r") 'remember)
235(define-key global-map (kbd "<f9> R") 'remember-region)
236@end lisp
237
15f3eb73
MO
238By default, remember uses the first annotation returned by
239@code{remember-annotation-functions}. To include all of the annotations,
240set @code{remember-run-all-annotation-functions-flag} to non-nil.
241
242@defopt remember-run-all-annotation-functions-flag
243Non-nil means use all annotations returned by
244@code{remember-annotation-functions}.
245@end defopt
246
247You can write custom functions that use a different set of
248remember-annotation-functions. For example:
249
250@lisp
251(defun my/remember-with-filename ()
252 "Always use the filename."
253 (interactive)
254 (let ((remember-annotation-functions '(buffer-file-name)))
255 (call-interactively 'remember)))
256@end lisp
257
7d3f6f1a
MO
258@node Function Reference, Keystrokes, Quick Start, Top
259@comment node-name, next, previous, up
260@chapter Function Reference
261
262@file{remember.el} defines the following interactive functions:
263
264@defun remember initial
265Remember an arbitrary piece of data. With a prefix, it will use the
266region as @var{initial}.
267@end defun
268
269@defun remember-region beg end
270If called from within the remember buffer, @var{beg} and @var{end} are
271ignored, and the entire buffer will be remembered. If called from any
272other buffer, that region, plus any context information specific to
273that region, will be remembered.
274@end defun
275
276@defun remember-clipboard
277Remember the contents of the current clipboard. This is most useful
278for remembering things from Netscape or other X Windows applications.
279@end defun
280
6159985a 281@defun remember-finalize
7d3f6f1a
MO
282Remember the contents of the current buffer.
283@end defun
284
285@defun remember-mode
286This enters the major mode for output from @command{remember}. This
287buffer is used to collect data that you want remember. Just hit
288@kbd{C-c C-c} when you're done entering, and it will go ahead and file
289the data for latter retrieval, and possible indexing.
290@end defun
291
292@node Keystrokes, Backends, Function Reference, Top
293@comment node-name, next, previous, up
294@chapter Keystroke Reference
295
296@file{remember.el} defines the following keybindings by default:
297
298@table @kbd
299
6159985a 300@item C-c C-c (`remember-finalize')
7d3f6f1a
MO
301Remember the contents of the current buffer.
302
303@item C-c C-k (`remember-destroy')
304Destroy the current *Remember* buffer.
305
6159985a 306@item C-x C-s (`remember-finalize')
7d3f6f1a
MO
307Remember the contents of the current buffer.
308
309@end table
310
bec9b2f5 311@node Backends, GNU Free Documentation License, Keystrokes, Top
7d3f6f1a 312@comment node-name, next, previous, up
15f3eb73
MO
313@chapter Backends
314
315You can save remembered notes to a variety of backends.
316
317@menu
318* Text File:: Saving to a text file.
bec9b2f5 319* Diary:: Saving to a Diary file.
15f3eb73 320* Mailbox:: Saving to a mailbox.
bec9b2f5 321* Org:: Saving to an Org Mode file.
15f3eb73
MO
322@end menu
323
bec9b2f5
MO
324@node Text File, Diary, Backends, Backends
325@comment node-name, next, previous, up
15f3eb73 326@section Saving to a Text File
bec9b2f5 327@cindex text file, saving to
15f3eb73 328
bec9b2f5 329@subheading Insinuation
15f3eb73
MO
330
331@lisp
332(setq remember-handler-functions '(remember-append-to-file))
333@end lisp
334
bec9b2f5
MO
335@subheading Options
336
15f3eb73 337@defopt remember-data-file
bec9b2f5 338The file in which to store unprocessed data.
15f3eb73
MO
339@end defopt
340
341@defopt remember-leader-text
bec9b2f5 342The text used to begin each remember item.
15f3eb73
MO
343@end defopt
344
bec9b2f5
MO
345@node Diary, Mailbox, Text File, Backends
346@comment node-name, next, previous, up
347@section Saving to a Diary file
348@cindex diary, integration
15f3eb73 349
bec9b2f5 350@subheading Insinuation
15f3eb73
MO
351
352@lisp
bec9b2f5 353(add-to-list 'remember-handler-functions 'remember-diary-extract-entries)
15f3eb73
MO
354@end lisp
355
bec9b2f5 356@subheading Options
15f3eb73 357
bec9b2f5
MO
358@defopt remember-diary-file
359File for extracted diary entries.
3728bf03 360If this is nil, then @code{diary-file} will be used instead."
bec9b2f5 361@end defopt
15f3eb73 362
bec9b2f5 363@node Mailbox, Org, Diary, Backends
15f3eb73 364@comment node-name, next, previous, up
bec9b2f5
MO
365@section Saving to a Mailbox
366@cindex mailbox, saving to
15f3eb73 367
bec9b2f5 368@subheading Insinuation
15f3eb73
MO
369
370@lisp
bec9b2f5 371(add-to-list 'remember-handler-functions 'remember-store-in-mailbox)
15f3eb73
MO
372@end lisp
373
bec9b2f5 374@subheading Options
15f3eb73 375
bec9b2f5
MO
376@defopt remember-mailbox
377The file in which to store remember data as mail.
15f3eb73
MO
378@end defopt
379
bec9b2f5
MO
380@defopt remember-default-priority
381The default priority for remembered mail messages.
15f3eb73
MO
382@end defopt
383
bec9b2f5 384@node Org, , Mailbox, Backends
15f3eb73 385@comment node-name, next, previous, up
bec9b2f5
MO
386@section Saving to an Org Mode file
387@cindex org mode, integration
388
389For instructions on how to integrate Remember with Org Mode,
390consult @ref{Remember, , , org}.
15f3eb73 391
bec9b2f5 392@node GNU Free Documentation License, Concept Index, Backends, Top
15f3eb73
MO
393@appendix GNU Free Documentation License
394@include doclicense.texi
395
396@node Concept Index, , GNU Free Documentation License, Top
397@comment node-name, next, previous, up
398@unnumbered Index
399
400@printindex cp
401
402@bye
904fac67
MB
403
404@ignore
405 arch-tag: 5b980db0-20cc-4167-b845-52dc11d53b9f
406@end ignore