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