annotate etc/emacs-buffer.gdb @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
1 # emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
2
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100972
diff changeset
3 # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
4
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
5 # Maintainer: Noah Friedman <friedman@splode.com>
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
6 # Status: Works with Emacs 22.0.51.1 (prerelease) as of 2006-01-12.
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
7 # Older cvs snapshots, and released versions, will not work due to
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
8 # changes in lisp data structures. But there are older versions of
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
9 # this gdb script which work with those versions.
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
10 # Created: 2005-04-28
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
11
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
12 # This file is part of GNU Emacs.
95004
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
13
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
14 # GNU Emacs is free software: you can redistribute it and/or modify
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
15 # it under the terms of the GNU General Public License as published by
95004
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
16 # the Free Software Foundation, either version 3 of the License, or
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
17 # (at your option) any later version.
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
18
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
19 # GNU Emacs is distributed in the hope that it will be useful,
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
22 # GNU General Public License for more details.
95004
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
23
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
24 # You should have received a copy of the GNU General Public License
95004
cbf5528cf447 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79776
diff changeset
25 # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
26
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
27 # Commentary:
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
28
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
29 # This is a set of gdb macros for recovering the contents of buffers from
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
30 # an Emacs coredump; they may not always be file-backed or have a recent
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
31 # autosave.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
32 #
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
33 # The Emacs executable must have debugging symbols for this to work.
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
34 # But you never strip Emacs, right?
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
35 #
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
36 # The main commands of interest are `ybuffer-list', `yfile-buffers',
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
37 # `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
38 # namespace collisions with emacs/src/.gdbinit.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
39
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
40 # Example usage:
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
41 #
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
42 # $ gdb /export/src/emacs/2005-05-02--03-17/src/emacs core.emacs.6.9845
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
43 # Current directory is /u/noah/
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
44 # GNU gdb (6.1post-1.20040607.43rh)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
45 # ...
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
46 # #0 0x400007a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
47 # (gdb) source emacs-buffer.gdb
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
48 # (gdb) ybuffer-list
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
49 # B# M Size Name Mode File
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
50 # -- - ---- ---- ---- ----
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
51 # 0 * 556 mail to emacs-devel@gnu.org Mail
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
52 # 1 * 0 *Minibuf-1* Fundamental
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
53 # 2 145769 ChangeLog Change Log /u/noah/lib/elisp/noahf/ChangeLog
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
54 # 3 6619 ascii-table.el Elisp /u/noah/lib/elisp/noahf/ascii-table.el
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
55 # 4 * 48396 *Messages* Fundamental
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
56 # 5 3191 *Apropos* Apropos
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
57 # 6 17642 init-21.el Elisp /u/noah/etc/init/emacs/init-21.el
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
58 # 7 333 cpuid.c C /u/noah/cpuid.c
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
59 # 8 230 src Dired
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
60 # 9 218 noah Dired
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
61 # 10 * 21 *Echo Area 0* Fundamental
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
62 # 11 * 0 *Echo Area 1* Fundamental
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
63 # 12 319952 *bbdb data* Text /u/noah/.bbdb
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
64 # (gdb) ysave-buffer 0 mail.save
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
65 # [Wrote buffer "mail to emacs-devel@gnu.org" to file mail.save]
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
66 # (gdb) quit
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
67 # $ ls -l mail.save
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
68 # -rw-rw-rw- 1 noah user 556 May 2 04:05 mail.save
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
69 # $
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
70
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
71 # Code:
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
72
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
73 # Force loading of symbols, enough to give us gdb_valbits etc.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
74 set main
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
75
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
76 # When nonzero, display some extra diagnostics in various commands
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
77 set $yverbose = 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
78 set $yfile_buffers_only = 0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
79
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
80 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
81 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
82
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
83 define ygetptr
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
84 set $ptr = $arg0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
85 set $ptr = (gdb_use_union ? $ptr.u.val : $ptr & $valmask) | gdb_data_seg_bits
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
86 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
87
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
88 define ybuffer-list
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
89 set $files_only = $yfile_buffers_only
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
90 set $yfile_buffers_only = 0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
91
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
92 if $yverbose
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
93 printf "B# M Size Name Mode File\n"
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
94 printf "-- - ---- ---- ---- ----\n"
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
95 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
96
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
97 set $i = 0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
98 set $alist = Vbuffer_alist
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
99 while $alist != Qnil
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
100 ygetptr $alist
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
101 set $this = ((struct Lisp_Cons *) $ptr)->car
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
102 set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
103
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
104 # Vbuffer_alist elts are pairs of the form (name . buffer)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
105 ygetptr $this
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
106 set $buf = ((struct Lisp_Cons *) $ptr)->u.cdr
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
107 ygetptr $buf
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
108 set $buf = (struct buffer *) $ptr
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
109
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
110 if ! ($files_only && $buf->filename == Qnil)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
111 ygetptr $buf->name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
112 set $name = ((struct Lisp_String *) $ptr)->data
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
113 set $modp = ($buf->text->modiff > $buf->text->save_modiff) ? '*' : ' '
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
114
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
115 ygetptr $buf->mode_name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
116 set $mode = ((struct Lisp_String *) $ptr)->data
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
117
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
118 if $buf->filename != Qnil
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
119 ygetptr $buf->filename
63292
5ca9652ec98b (ybuffer-list): Don't use $filename; can't use char as placeholder when
Noah Friedman <friedman@splode.com>
parents: 62906
diff changeset
120 printf "%2d %c %9d %-20s %-10s %s\n", \
5ca9652ec98b (ybuffer-list): Don't use $filename; can't use char as placeholder when
Noah Friedman <friedman@splode.com>
parents: 62906
diff changeset
121 $i, $modp, ($buf->text->z_byte - 1), $name, $mode, \
5ca9652ec98b (ybuffer-list): Don't use $filename; can't use char as placeholder when
Noah Friedman <friedman@splode.com>
parents: 62906
diff changeset
122 ((struct Lisp_String *) $ptr)->data
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
123 else
63292
5ca9652ec98b (ybuffer-list): Don't use $filename; can't use char as placeholder when
Noah Friedman <friedman@splode.com>
parents: 62906
diff changeset
124 printf "%2d %c %9d %-20s %-10s\n", \
5ca9652ec98b (ybuffer-list): Don't use $filename; can't use char as placeholder when
Noah Friedman <friedman@splode.com>
parents: 62906
diff changeset
125 $i, $modp, ($buf->text->z_byte - 1), $name, $mode
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
126 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
127 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
128
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
129 set $i++
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
130 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
131 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
132 document ybuffer-list
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
133 Display a list of buffer names, sizes, and other attributes.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
134 The buffer number in the first column is used as an argument
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
135 to some other emacs-buffer recovery commands, e.g. `ysave-buffer'.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
136 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
137
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
138 define yfile-buffers
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
139 set $yfile_buffers_only = 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
140 ybuffer-list
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
141 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
142 document yfile-buffers
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
143 Display a list of buffers which are associated with files.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
144 This is like `ybuffer-list', but only buffers that were visiting files
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
145 are displayed.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
146 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
147
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
148 define yset-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
149 set $i = $arg0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
150
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
151 set $alist = Vbuffer_alist
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
152 while ($alist != Qnil && $i > 0)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
153 ygetptr $alist
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
154 set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
155 set $i--
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
156 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
157
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
158 # Get car of alist; this is a pair (name . buffer)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
159 ygetptr $alist
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
160 set $this = ((struct Lisp_Cons *) $ptr)->car
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
161
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
162 # Get the buffer object
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
163 ygetptr $this
68376
b257be06d411 Replace all references to `cdr' field of conses with `u.cdr',
Noah Friedman <friedman@splode.com>
parents: 63292
diff changeset
164 set $this = ((struct Lisp_Cons *) $ptr)->u.cdr
62894
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
165
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
166 ygetptr $this
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
167 set $ycurrent_buffer = (struct buffer *) $ptr
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
168 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
169 document yset-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
170 Set current buffer (for other emacs-buffer recovery commands) to the ARG'th
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
171 buffer as displayed by `ybuffer-list'.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
172 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
173
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
174 define yget-buffer-pointers
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
175 yset-buffer $arg0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
176 set $buf = $ycurrent_buffer->text
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
177
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
178 set $beg = $buf->beg
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
179 set $gap = $beg + $buf->gpt_byte
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
180 set $gap_end = $gap + $buf->gap_size - 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
181 set $end = $gap_end + ($buf->z_byte - $buf->gpt_byte)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
182
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
183 set $modp = $buf->modiff > $buf->save_modiff
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
184
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
185 #print *$beg@($gap - $beg)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
186 #print *$gap_end@($end - $gap_end)
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
187 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
188 document yget-buffer-pointers
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
189 Update convenience variables with address pointers for the ARG'th buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
190 as displayed by `ybuffer-list'.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
191
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
192 This also sets the current buffer using `yset-buffer' (which see).
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
193 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
194
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
195 define yget-current-buffer-name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
196 set $this = $ycurrent_buffer->name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
197 ygetptr $this
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
198 set $ycurrent_buffer_name = ((struct Lisp_String *) $ptr)->data
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
199 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
200 document yget-current-buffer-name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
201 Set $ycurrent_buffer_name to the name of the currently selected buffer.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
202 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
203
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
204 define ycurrent-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
205 yget-current-buffer-name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
206 printf "%s\n", $ycurrent_buffer_name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
207 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
208 document ycurrent-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
209 Display the currently selected buffer.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
210 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
211
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
212 define ydump-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
213 yget-buffer-pointers $arg0
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
214 if $buf->z_byte > 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
215 if $buf->z_byte <= $buf->gpt_byte
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
216 set $endptr = $beg + $buf->gpt_byte - 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
217 dump binary memory $arg1 $beg $endptr
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
218 else
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
219 dump binary memory $arg1 $beg $gap-1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
220 append binary memory $arg1 $gap_end $end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
221 set $endptr = $end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
222 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
223 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
224 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
225 document ydump-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
226 Write contents of buffer N (as numbered according to `ybuffer-list') to
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
227 file FILE.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
228
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
229 This is mainly used as an internal subroutine for `ysave-buffer' and
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
230 `ybuffer-contents', which see.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
231 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
232
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
233 define ysave-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
234 ydump-buffer $arg0 $arg1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
235 if $yverbose
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
236 yget-current-buffer-name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
237 if $buf->z_byte <= 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
238 printf "[Buffer \"%s\" is empty.]\n", $ycurrent_buffer_name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
239 else
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
240 # Output string broken into separate calls as necessary to avoid
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
241 # requiring a running process for evaluation.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
242 printf "[Wrote buffer \"%s\" to file ", $ycurrent_buffer_name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
243 echo $arg1]\n
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
244 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
245 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
246 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
247 document ysave-buffer
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
248 Save contents of buffer N (as numbered according to `ybuffer-list') to
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
249 file FILE.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
250 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
251
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
252 define ybuffer-contents
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
253 ydump-buffer $arg0 /dev/stdout
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
254 if $yverbose && $buf->z_byte <= 1
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
255 yget-current-buffer-name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
256 printf "[Buffer \"%s\" is empty.]\n", $ycurrent_buffer_name
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
257 else
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
258 if *($endptr-1) != '\n'
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
259 echo \n
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
260 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
261 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
262 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
263 document ybuffer-contents
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
264 Write contents of buffer N (numbered according to `ybuffer-list') to stdout.
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
265 end
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
266
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
267 # local variables:
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
268 # mode: gdb-script
62ff5829d7ff New file
Noah Friedman <friedman@splode.com>
parents:
diff changeset
269 # end:
62905
89c679e72586 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 62894
diff changeset
270
89c679e72586 Add arch tagline
Miles Bader <miles@gnu.org>
parents: 62894
diff changeset
271 # arch-tag: 02087f62-2663-4868-977a-1fbb2fc2e7ef