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