annotate man/xemacs/regs.texi @ 5157:1fae11d56ad2

redo memory-usage mechanism, add way of dynamically initializing Lisp objects -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): Rewrite to take into account API changes in memory-usage functions. src/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (disksave_object_finalization_1): * alloc.c (lisp_object_storage_size): * alloc.c (listu): * alloc.c (listn): * alloc.c (Fobject_memory_usage_stats): * alloc.c (compute_memusage_stats_length): * alloc.c (Fobject_memory_usage): * alloc.c (Ftotal_object_memory_usage): * alloc.c (malloced_storage_size): * alloc.c (common_init_alloc_early): * alloc.c (reinit_alloc_objects_early): * alloc.c (reinit_alloc_early): * alloc.c (init_alloc_once_early): * alloc.c (syms_of_alloc): * alloc.c (reinit_vars_of_alloc): * buffer.c: * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_text_usage): * buffer.c (compute_buffer_usage): * buffer.c (buffer_memory_usage): * buffer.c (buffer_objects_create): * buffer.c (syms_of_buffer): * buffer.c (vars_of_buffer): * console-impl.h (struct console_methods): * dynarr.c (Dynarr_memory_usage): * emacs.c (main_1): * events.c (clear_event_resource): * extents.c: * extents.c (compute_buffer_extent_usage): * extents.c (extent_objects_create): * extents.h: * faces.c: * faces.c (compute_face_cachel_usage): * faces.c (face_objects_create): * faces.h: * general-slots.h: * glyphs.c: * glyphs.c (compute_glyph_cachel_usage): * glyphs.c (glyph_objects_create): * glyphs.h: * lisp.h: * lisp.h (struct usage_stats): * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lrecord.h (INIT_LISP_OBJECT): * lrecord.h (INIT_MODULE_LISP_OBJECT): * lrecord.h (UNDEF_LISP_OBJECT): * lrecord.h (UNDEF_MODULE_LISP_OBJECT): * lrecord.h (DECLARE_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (syms_of_lstream): * lstream.c (vars_of_lstream): * marker.c: * marker.c (compute_buffer_marker_usage): * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: * mule-charset.c: * mule-charset.c (struct charset_stats): * mule-charset.c (compute_charset_usage): * mule-charset.c (charset_memory_usage): * mule-charset.c (mule_charset_objects_create): * mule-charset.c (syms_of_mule_charset): * mule-charset.c (vars_of_mule_charset): * redisplay.c: * redisplay.c (compute_rune_dynarr_usage): * redisplay.c (compute_display_block_dynarr_usage): * redisplay.c (compute_glyph_block_dynarr_usage): * redisplay.c (compute_display_line_dynarr_usage): * redisplay.c (compute_line_start_cache_dynarr_usage): * redisplay.h: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h: * symbols.c: * symbols.c (reinit_symbol_objects_early): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symbols.c (defsymbol_massage_name_1): * symsinit.h: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_getprop): * ui-gtk.c (emacs_gtk_object_putprop): * ui-gtk.c (ui_gtk_objects_create): * unicode.c (compute_from_unicode_table_size_1): * unicode.c (compute_to_unicode_table_size_1): * unicode.c (compute_from_unicode_table_size): * unicode.c (compute_to_unicode_table_size): * window.c: * window.c (struct window_stats): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): * window.c (window_memory_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): * window.h: Redo memory-usage mechanism, make it general; add way of dynamically initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to CONSOLE_HAS_METHOD(). (1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for specifying that a Lisp object type has a particular method or property. Call such methods with OBJECT_METH, MAYBE_OBJECT_METH, OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY. Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to specify them (getprop, putprop, remprop, plist, disksave) now instead use the dynamic-method mechanism. The main benefit of this is that new methods or properties can be added without requiring that the declaration statements of all existing methods be modified. We have to make the `struct lrecord_implementation' non-const, but I don't think this should have any effect on speed -- the only possible method that's really speed-critical is the mark method, and we already extract those out into a separate (non-const) array for increased cache locality. Object methods need to be reinitialized after pdump, so we put them in separate functions such as face_objects_create(), extent_objects_create() and call them appropriately from emacs.c The only current object property (`memusage_stats_list') that objects can specify is a Lisp object and gets staticpro()ed so it only needs to be set during dump time, but because it references symbols that might not exist in a syms_of_() function, we initialize it in vars_of_(). There is also an object property (`num_extra_memusage_stats') that is automatically initialized based on `memusage_stats_list'; we do that in reinit_vars_of_alloc(), which is called after all vars_of_() functions are called. `disksaver' method was renamed `disksave' to correspond with the name normally given to the function (e.g. disksave_lstream()). (2) Generalize the memory-usage mechanism in `buffer-memory-usage', `window-memory-usage', `charset-memory-usage' into an object-type- specific mechanism called by a single function `object-memory-usage'. (Former function `object-memory-usage' renamed to `total-object-memory-usage'). Generalize the mechanism of different "slices" so that we can have different "classes" of memory described and different "slices" onto each class; `t' separates classes, `nil' separates slices. Currently we have three classes defined: the memory of an object itself, non-Lisp-object memory associated with the object (e.g. arrays or dynarrs stored as fields in the object), and Lisp-object memory associated with the object (other internal Lisp objects stored in the object). This isn't completely finished yet and we might need to further separate the "other internal Lisp objects" class into two classes. The memory-usage mechanism uses a `struct usage_stats' (renamed from `struct overhead_stats') to describe a malloc-view onto a set of allocated memory (listing how much was requested and various types of overhead) and a more general `struct generic_usage_stats' (with a `struct usage_stats' in it) to hold all statistics about object memory. `struct generic_usage_stats' contains an array of 32 Bytecounts, which are statistics of unspecified semantics. The intention is that individual types declare a corresponding struct (e.g. `struct window_stats') with the same structure but with specific fields in place of the array, corresponding to specific statistics. The number of such statistics is an object property computed from the list of tags (Lisp symbols describing the statistics) stored in `memusage_stats_list'. The idea here is to allow particular object types to customize the number and semantics of the statistics where completely avoiding consing. This doesn't matter so much yet, but the intention is to have the memory usage of all objects computed at the end of GC, at the same time as other statistics are currently computed. The values for all statistics for a single type would be added up to compute aggregate values for all objects of a specific type. To make this efficient, we can't allow any memory allocation at all. (3) Create some additional functions for creating lists that specify the elements directly as args rather than indirectly through an array: listn() (number of args given), listu() (list terminated by Qunbound). (4) Delete a bit of remaining unused C window_config stuff, also unused lrecord_type_popup_data.
author Ben Wing <ben@xemacs.org>
date Thu, 18 Mar 2010 10:50:06 -0500
parents 74fd4e045ea6
children 697ef44129c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @node Registers, Display, Rectangles, Top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 @chapter Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @cindex registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
6 XEmacs @dfn{registers} are places in which you can save text or
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
7 positions for later use. Once you save text or a rectangle in a
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
8 register, you can copy it into the buffer once or many times; a position
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
9 saved in a register is used by moving point to that position.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
10 Rectangles can also be copied into and out of registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
11 (@pxref{Rectangles}).
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
13 @findex view-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
14 Each register has a name which is a single character. A register can
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
15 store a piece of text, a rectangle, a position, a window configuration,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
16 or a file name, but only one thing at any given time. Whatever you
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
17 store in a register remains there until you store something else in that
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
18 register. To see what a register @var{r} contains, use @kbd{M-x
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
19 view-register}.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 @item M-x view-register @key{RET} @var{r}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 Display a description of what register @var{r} contains.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 @findex view-register
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 @kbd{M-x view-register} reads a register name as an argument and then
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 displays the contents of the specified register.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
30 @menu
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
31 * Position: RegPos. Saving positions in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
32 * Text: RegText. Saving text in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
33 * Rectangle: RegRect. Saving rectangles in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
34 * Configurations: RegConfig. Saving window configurations in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
35 * Files: RegFiles. File names in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
36 * Numbers: RegNumbers. Numbers in registers.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
37 * Bookmarks:: Bookmarks are like registers, but persistent.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
38 @end menu
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
39
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 @node RegPos, RegText, Registers, Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 @section Saving Positions in Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
43 Saving a position records a place in a buffer so that you can move
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
44 back there later. Moving to a saved position switches to that buffer
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
45 and moves point to that place in it.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 @table @kbd
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
48 @item C-x r @key{SPC} @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
49 Save position of point in register @var{r} (@code{point-to-register}).
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 @item C-x r j @var{r}
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
51 Jump to the position saved in register @var{r} (@code{jump-to-register}).
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 @kindex C-x r SPC
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 @findex point-to-register
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
56 To save the current position of point in a register, choose a name
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
57 @var{r} and type @kbd{C-x r @key{SPC} @var{r}}. The register @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
58 retains the position thus saved until you store something else in that
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
59 register.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 @kindex C-x r j
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
62 @findex jump-to-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
63 The command @kbd{C-x r j @var{r}} moves point to the position recorded
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 in register @var{r}. The register is not affected; it continues to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 record the same location. You can jump to the same position using the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 same register as often as you want.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
68 If you use @kbd{C-x r j} to go to a saved position, but the buffer it
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
69 was saved from has been killed, @kbd{C-x r j} tries to create the buffer
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
70 again by visiting the same file. Of course, this works only for buffers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
71 that were visiting files.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
72
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 @node RegText, RegRect, RegPos, Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 @section Saving Text in Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 When you want to insert a copy of the same piece of text many times, it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 can be impractical to use the kill ring, since each subsequent kill moves
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 the piece of text further down on the ring. It becomes hard to keep
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 track of the argument needed to retrieve the same text with @kbd{C-y}. An
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 alternative is to store the text in a register with @kbd{C-x r s}
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
81 (@code{copy-to-register}) and then retrieve it with @kbd{C-x r i}
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 (@code{insert-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 @item C-x r s @var{r}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 Copy region into register @var{r} (@code{copy-to-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 @item C-x r g @var{r}
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
88 @itemx C-x r i @var{r}
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 Insert text contents of register @var{r} (@code{insert-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 @kindex C-x r s
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 @kindex C-x r g
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
94 @kindex C-x r i
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 @findex copy-to-register
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 @findex insert-register
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 @kbd{C-x r s @var{r}} stores a copy of the text of the region into the
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
98 register named @var{r}. Given a numeric argument, @kbd{C-x r s @var{r}}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
99 deletes the text from the buffer as well.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
101 @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
102 By default it leaves point before the text and places the mark after
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
103 it. With a numeric argument (@kbd{C-u}), it puts point after the text
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
104 and the mark before it.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
106 @node RegRect, RegConfig, RegText, Registers
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 @section Saving Rectangles in Registers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 @cindex rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 A register can contain a rectangle instead of lines of text. The rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111 is represented as a list of strings. @xref{Rectangles}, for basic
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 information on rectangles and how to specify rectangles in a buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 @table @kbd
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
115 @findex copy-rectangle-to-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
116 @kindex C-x r r
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 @item C-x r r @var{r}
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
118 Copy the region-rectangle into register @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
119 (@code{copy-rectangle-to-register}). With a numeric argument, delete it
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
120 as well.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 @item C-x r g @var{r}
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
122 @itemx C-x r i @var{r}
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 Insert the rectangle stored in register @var{r} (if it contains a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 rectangle) (@code{insert-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
127 The @kbd{C-x r i @var{r}} command inserts linear text if the register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
128 contains
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 that, or inserts a rectangle if the register contains one.
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
130
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
131 See also the command @code{sort-columns}, which you can think of
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
132 as sorting a rectangle. @xref{Sorting}.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
133
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
134 @node RegConfig, RegNumbers, RegRect, Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
135 @section Saving Window Configurations in Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
136
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
137 @findex window-configuration-to-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
138 @findex frame-configuration-to-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
139 @kindex C-x r w
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
140 @c @kindex C-x r f
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
141 You can save the window configuration of the selected frame in a
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
142 register, or even the configuration of all windows in all frames, and
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
143 restore the configuration later.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
144
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
145 @table @kbd
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
146 @item C-x r w @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
147 Save the state of the selected frame's windows in register @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
148 (@code{window-configuration-to-register}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
149 @c @item C-x r f @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
150 @item M-x frame-configuration-to-register @key{RET} @var{r}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
151 Save the state of all frames, including all their windows, in register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
152 @var{r} (@code{frame-configuration-to-register}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
153 @end table
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
154
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
155 Use @kbd{C-x r j @var{r}} to restore a window or frame configuration.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
156 This is the same command used to restore a cursor position. When you
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
157 restore a frame configuration, any existing frames not included in the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
158 configuration become invisible. If you wish to delete these frames
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
159 instead, use @kbd{C-u C-x r j @var{r}}.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
160
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
161 @node RegNumbers, RegFiles, RegConfig, Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
162 @section Keeping Numbers in Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
163
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
164 There are commands to store a number in a register, to insert
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
165 the number in the buffer in decimal, and to increment it. These commands
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
166 can be useful in keyboard macros (@pxref{Keyboard Macros}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
167
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
168 @table @kbd
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
169 @item C-u @var{number} C-x r n @var{reg}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
170 @kindex C-x r n
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
171 @findex number-to-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
172 Store @var{number} into register @var{reg} (@code{number-to-register}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
173 @item C-u @var{number} C-x r + @var{reg}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
174 @kindex C-x r +
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
175 @findex increment-register
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
176 Increment the number in register @var{reg} by @var{number}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
177 (@code{increment-register}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
178 @item C-x r g @var{reg}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
179 Insert the number from register @var{reg} into the buffer.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
180 @end table
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
181
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
182 @kbd{C-x r g} is the same command used to insert any other
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
183 sort of register contents into the buffer.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
184
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
185 @node RegFiles, Bookmarks, RegNumbers, Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
186 @section Keeping File Names in Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
187
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
188 If you visit certain file names frequently, you can visit them more
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
189 conveniently if you put their names in registers. Here's the Lisp code
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
190 used to put a file name in a register:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
191
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
192 @smallexample
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
193 (set-register ?@var{r} '(file . @var{name}))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
194 @end smallexample
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
195
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
196 @need 3000
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
197 @noindent
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
198 For example,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
199
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
200 @smallexample
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
201 (set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog"))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
202 @end smallexample
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
203
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
204 @noindent
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
205 puts the file name shown in register @samp{z}.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
206
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
207 To visit the file whose name is in register @var{r}, type @kbd{C-x r j
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
208 @var{r}}. (This is the same command used to jump to a position or
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
209 restore a frame configuration.)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
210
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
211 @node Bookmarks, , RegFiles, Registers
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
212 @section Bookmarks
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
213 @cindex bookmarks
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
214
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
215 @dfn{Bookmarks} are somewhat like registers in that they record
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
216 positions you can jump to. Unlike registers, they have long names, and
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
217 they persist automatically from one Emacs session to the next. The
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
218 prototypical use of bookmarks is to record ``where you were reading'' in
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
219 various files.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
220
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
221 Note: bookmark.el is distributed in edit-utils package. You need to
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
222 install that to use bookmark facility (@pxref{Packages}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
223
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
224 @table @kbd
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
225 @item C-x r m @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
226 Set the bookmark for the visited file, at point.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
227
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
228 @item C-x r m @var{bookmark} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
229 @findex bookmark-set
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
230 Set the bookmark named @var{bookmark} at point (@code{bookmark-set}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
231
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
232 @item C-x r b @var{bookmark} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
233 @findex bookmark-jump
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
234 Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
235
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
236 @item C-x r l
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
237 @findex list-bookmarks
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
238 List all bookmarks (@code{list-bookmarks}).
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
239
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
240 @item M-x bookmark-save
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
241 @findex bookmark-save
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
242 Save all the current bookmark values in the default bookmark file.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
243 @end table
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
244
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
245 @kindex C-x r m
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
246 @findex bookmark-set
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
247 @kindex C-x r b
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
248 @findex bookmark-jump
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
249 The prototypical use for bookmarks is to record one current position
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
250 in each of several files. So the command @kbd{C-x r m}, which sets a
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
251 bookmark, uses the visited file name as the default for the bookmark
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
252 name. If you name each bookmark after the file it points to, then you
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
253 can conveniently revisit any of those files with @kbd{C-x r b}, and move
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
254 to the position of the bookmark at the same time.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
255
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
256 @kindex C-x r l
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
257 To display a list of all your bookmarks in a separate buffer, type
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
258 @kbd{C-x r l} (@code{list-bookmarks}). If you switch to that buffer,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
259 you can use it to edit your bookmark definitions or annotate the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
260 bookmarks. Type @kbd{C-h m} in that buffer for more information about
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
261 its special editing commands.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
262
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
263 When you kill XEmacs, XEmacs offers to save your bookmark values in
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
264 your default bookmark file, @file{~/.emacs.bmk}, if you have changed any
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
265 bookmark values. You can also save the bookmarks at any time with the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
266 @kbd{M-x bookmark-save} command. The bookmark commands load your
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
267 default bookmark file automatically. This saving and loading is how
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
268 bookmarks persist from one XEmacs session to the next.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
269
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
270 @vindex bookmark-save-flag
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
271 If you set the variable @code{bookmark-save-flag} to 1, then each
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
272 command that sets a bookmark will also save your bookmarks; this way,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
273 you don't lose any bookmark values even if XEmacs crashes. (The value,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
274 if a number, says how many bookmark modifications should go by between
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
275 saving.)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
276
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
277 @vindex bookmark-search-size
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
278 Bookmark position values are saved with surrounding context, so that
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
279 @code{bookmark-jump} can find the proper position even if the file is
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
280 modified slightly. The variable @code{bookmark-search-size} says how
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
281 many characters of context to record, on each side of the bookmark's
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
282 position.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
283
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
284 Here are some additional commands for working with bookmarks:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
285
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
286 @table @kbd
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
287 @item M-x bookmark-load @key{RET} @var{filename} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
288 @findex bookmark-load
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
289 Load a file named @var{filename} that contains a list of bookmark
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
290 values. You can use this command, as well as @code{bookmark-write}, to
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
291 work with other files of bookmark values in addition to your default
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
292 bookmark file.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
293
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
294 @item M-x bookmark-write @key{RET} @var{filename} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
295 @findex bookmark-write
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
296 Save all the current bookmark values in the file @var{filename}.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
297
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
298 @item M-x bookmark-delete @key{RET} @var{bookmark} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
299 @findex bookmark-delete
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
300 Delete the bookmark named @var{bookmark}.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
301
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
302 @item M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
303 @findex bookmark-insert-location
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
304 Insert in the buffer the name of the file that bookmark @var{bookmark}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
305 points to.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
306
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
307 @item M-x bookmark-insert @key{RET} @var{bookmark} @key{RET}
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
308 @findex bookmark-insert
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
309 Insert in the buffer the @emph{contents} of the file that bookmark
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
310 @var{bookmark} points to.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 0
diff changeset
311 @end table