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