annotate lisp/register.el @ 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 280c8ae2476d
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 20675
diff changeset
1 ;;; register.el --- register commands for Emacs
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 243
diff changeset
2
74442
b2e5081b9320 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
3 ;; Copyright (C) 1985, 1993, 1994, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106034
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 820
diff changeset
5
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 779
diff changeset
6 ;; Maintainer: FSF
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: internal
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
8 ;; Package: emacs
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 779
diff changeset
9
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
25 ;;; Commentary:
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
26
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
27 ;; This package of functions emulates and somewhat extends the venerable
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
28 ;; TECO's `register' feature, which permits you to save various useful
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
29 ;; pieces of buffer state to named variables. The entry points are
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
30 ;; documented in the Emacs user's manual.
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2203
diff changeset
31
106034
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
32 (declare-function semantic-insert-foreign-tag "semantic/tag" (foreign-tag))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
33 (declare-function semantic-tag-buffer "semantic/tag" (tag))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
34 (declare-function semantic-tag-start "semantic/tag" (tag))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
35
96441
40356b7a4808 Bind global keys to ctl-x-r-map in autoload cookies.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
36 ;;; Global key bindings
40356b7a4808 Bind global keys to ctl-x-r-map in autoload cookies.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
37
105128
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
38 (define-key ctl-x-r-map "\C-@" 'point-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
39 (define-key ctl-x-r-map [?\C-\ ] 'point-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
40 (define-key ctl-x-r-map " " 'point-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
41 (define-key ctl-x-r-map "j" 'jump-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
42 (define-key ctl-x-r-map "s" 'copy-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
43 (define-key ctl-x-r-map "x" 'copy-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
44 (define-key ctl-x-r-map "i" 'insert-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
45 (define-key ctl-x-r-map "g" 'insert-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
46 (define-key ctl-x-r-map "r" 'copy-rectangle-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
47 (define-key ctl-x-r-map "n" 'number-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
48 (define-key ctl-x-r-map "+" 'increment-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
49 (define-key ctl-x-r-map "w" 'window-configuration-to-register)
c4c3db18d05c (ctl-x-r-map): Define the keys here instead of using autoload.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103249
diff changeset
50 (define-key ctl-x-r-map "f" 'frame-configuration-to-register)
96441
40356b7a4808 Bind global keys to ctl-x-r-map in autoload cookies.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
51
789
71d052f72ac1 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 779
diff changeset
52 ;;; Code:
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (defvar register-alist nil
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 "Alist of elements (NAME . CONTENTS), one for each Emacs register.
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
56 NAME is a character (a number). CONTENTS is a string, number, marker or list.
2699
83fee0378e0e (jump-to-register): Allow file name "in" a register.
Richard M. Stallman <rms@gnu.org>
parents: 2571
diff changeset
57 A list of strings represents a rectangle.
103249
019c8b2b5898 * register.el (register-alist): Doc fix (Bug#3311).
Chong Yidong <cyd@stupidchicken.com>
parents: 102508
diff changeset
58 A list of the form (file . FILE-NAME) represents the file named FILE-NAME.
019c8b2b5898 * register.el (register-alist): Doc fix (Bug#3311).
Chong Yidong <cyd@stupidchicken.com>
parents: 102508
diff changeset
59 A list of the form (file-query FILE-NAME POSITION) represents
019c8b2b5898 * register.el (register-alist): Doc fix (Bug#3311).
Chong Yidong <cyd@stupidchicken.com>
parents: 102508
diff changeset
60 position POSITION in the file named FILE-NAME, but query before
019c8b2b5898 * register.el (register-alist): Doc fix (Bug#3311).
Chong Yidong <cyd@stupidchicken.com>
parents: 102508
diff changeset
61 visiting it.
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
62 A list of the form (WINDOW-CONFIGURATION POSITION)
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
63 represents a saved window configuration plus a saved value of point.
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
64 A list of the form (FRAME-CONFIGURATION POSITION)
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
65 represents a saved frame configuration plus a saved value of point.")
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
102508
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
67 (defun get-register (register)
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
68 "Return contents of Emacs register named REGISTER, or nil if none."
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
69 (cdr (assq register register-alist)))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
71 (defun set-register (register value)
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
72 "Set contents of Emacs register named REGISTER to VALUE. Returns VALUE.
102508
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
73 See the documentation of the variable `register-alist' for possible VALUEs."
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
74 (let ((aelt (assq register register-alist)))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (if aelt
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 (setcdr aelt value)
47646
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
77 (push (cons register value) register-alist))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 value))
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
80 (defun point-to-register (register &optional arg)
141
405b4fa6de27 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 72
diff changeset
81 "Store current location of point in register REGISTER.
779
c2dbf1fe0506 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
82 With prefix argument, store current frame configuration.
141
405b4fa6de27 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 72
diff changeset
83 Use \\[jump-to-register] to go to that location or restore that configuration.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 Argument is a character, naming the register."
141
405b4fa6de27 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 72
diff changeset
85 (interactive "cPoint to register: \nP")
47646
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
86 ;; Turn the marker into a file-ref if the buffer is killed.
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
87 (add-hook 'kill-buffer-hook 'register-swap-out nil t)
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
88 (set-register register
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
89 (if arg (list (current-frame-configuration) (point-marker))
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
90 (point-marker))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
92 (defun window-configuration-to-register (register &optional arg)
820
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
93 "Store the window configuration of the selected frame in register REGISTER.
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
94 Use \\[jump-to-register] to restore the configuration.
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
95 Argument is a character, naming the register."
4669
e212db4385f9 ({window,frame}-configuration-to-register): Fix prompt string in
Roland McGrath <roland@gnu.org>
parents: 3656
diff changeset
96 (interactive "cWindow configuration to register: \nP")
20324
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
97 ;; current-window-configuration does not include the value
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
98 ;; of point in the current buffer, so record that separately.
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
99 (set-register register (list (current-window-configuration) (point-marker))))
820
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
100
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
101 (defun frame-configuration-to-register (register &optional arg)
820
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
102 "Store the window configuration of all frames in register REGISTER.
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
103 Use \\[jump-to-register] to restore the configuration.
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
104 Argument is a character, naming the register."
4669
e212db4385f9 ({window,frame}-configuration-to-register): Fix prompt string in
Roland McGrath <roland@gnu.org>
parents: 3656
diff changeset
105 (interactive "cFrame configuration to register: \nP")
20324
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
106 ;; current-frame-configuration does not include the value
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
107 ;; of point in the current buffer, so record that separately.
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
108 (set-register register (list (current-frame-configuration) (point-marker))))
820
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
109
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2315
diff changeset
110 (defalias 'register-to-point 'jump-to-register)
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
111 (defun jump-to-register (register &optional delete)
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 "Move point to location stored in a register.
2699
83fee0378e0e (jump-to-register): Allow file name "in" a register.
Richard M. Stallman <rms@gnu.org>
parents: 2571
diff changeset
113 If the register contains a file name, find that file.
102508
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
114 \(To put a file name in a register, you must use `set-register'.)
820
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
115 If the register contains a window configuration (one frame) or a frame
cd6b1e1da3fc *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 814
diff changeset
116 configuration (all frames), restore that frame or all frames accordingly.
4671
3c5e001c9d60 (jump-to-register): Take new optional arg NODELETE (prefix arg); pass
Roland McGrath <roland@gnu.org>
parents: 4669
diff changeset
117 First argument is a character, naming the register.
4931
ad035a2d8e26 (jump-to-register): Rename prefix arg to DELETE and invert its sense.
Richard M. Stallman <rms@gnu.org>
parents: 4671
diff changeset
118 Optional second arg non-nil (interactively, prefix argument) says to
ad035a2d8e26 (jump-to-register): Rename prefix arg to DELETE and invert its sense.
Richard M. Stallman <rms@gnu.org>
parents: 4671
diff changeset
119 delete any existing frames that the frame configuration doesn't mention.
4932
5986d619b4ca (jump-to-register): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4931
diff changeset
120 \(Otherwise, these frames are iconified.)"
4671
3c5e001c9d60 (jump-to-register): Take new optional arg NODELETE (prefix arg); pass
Roland McGrath <roland@gnu.org>
parents: 4669
diff changeset
121 (interactive "cJump to register: \nP")
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
122 (let ((val (get-register register)))
2202
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
123 (cond
20324
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
124 ((and (consp val) (frame-configuration-p (car val)))
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
125 (set-frame-configuration (car val) (not delete))
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
126 (goto-char (cadr val)))
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
127 ((and (consp val) (window-configuration-p (car val)))
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
128 (set-window-configuration (car val))
2365fc61875d (window-configuration-to-register):
Karl Heuer <kwzh@gnu.org>
parents: 16279
diff changeset
129 (goto-char (cadr val)))
2202
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
130 ((markerp val)
6462
e58207907f53 (jump-to-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 6336
diff changeset
131 (or (marker-buffer val)
e58207907f53 (jump-to-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 6336
diff changeset
132 (error "That register's buffer no longer exists"))
2202
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
133 (switch-to-buffer (marker-buffer val))
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
134 (goto-char val))
2699
83fee0378e0e (jump-to-register): Allow file name "in" a register.
Richard M. Stallman <rms@gnu.org>
parents: 2571
diff changeset
135 ((and (consp val) (eq (car val) 'file))
83fee0378e0e (jump-to-register): Allow file name "in" a register.
Richard M. Stallman <rms@gnu.org>
parents: 2571
diff changeset
136 (find-file (cdr val)))
16279
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
137 ((and (consp val) (eq (car val) 'file-query))
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
138 (or (find-buffer-visiting (nth 1 val))
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
139 (y-or-n-p (format "Visit file %s again? " (nth 1 val)))
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
140 (error "Register access aborted"))
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
141 (find-file (nth 1 val))
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
142 (goto-char (nth 2 val)))
106034
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
143 ((and (fboundp 'semantic-foreign-tag-p)
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
144 semantic-mode
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
145 (semantic-foreign-tag-p val))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
146 (switch-to-buffer (semantic-tag-buffer val))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
147 (goto-char (semantic-tag-start val)))
2202
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
148 (t
081afcef5e85 Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents: 1955
diff changeset
149 (error "Register doesn't contain a buffer position or configuration")))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
16279
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
151 (defun register-swap-out ()
47646
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
152 "Turn markers into file-query references when a buffer is killed."
16279
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
153 (and buffer-file-name
47646
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
154 (dolist (elem register-alist)
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
155 (and (markerp (cdr elem))
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
156 (eq (marker-buffer (cdr elem)) (current-buffer))
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
157 (setcdr elem
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
158 (list 'file-query
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
159 buffer-file-name
0e418919d79e (set-register): Use push.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44677
diff changeset
160 (marker-position (cdr elem))))))))
16279
e69577ede89e New kind of register value is a file name and position.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
161
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
162 (defun number-to-register (number register)
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
163 "Store a number in a register.
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
164 Two args, NUMBER and REGISTER (a character, naming the register).
20430
1b4c829e2f42 (number-to-register): Move point as a side effect.
Karl Heuer <kwzh@gnu.org>
parents: 20417
diff changeset
165 If NUMBER is nil, a decimal number is read from the buffer starting
1b4c829e2f42 (number-to-register): Move point as a side effect.
Karl Heuer <kwzh@gnu.org>
parents: 20417
diff changeset
166 at point, and point moves to the end of that number.
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
167 Interactively, NUMBER is the prefix arg (none means nil)."
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
168 (interactive "P\ncNumber to register: ")
48451
c623c9adbefe (describe-register-1): Don't assign to val the value returned by
Juanma Barranquero <lekktu@gmail.com>
parents: 47646
diff changeset
169 (set-register register
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
170 (if number
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
171 (prefix-numeric-value number)
20430
1b4c829e2f42 (number-to-register): Move point as a side effect.
Karl Heuer <kwzh@gnu.org>
parents: 20417
diff changeset
172 (if (looking-at "\\s-*-?[0-9]+")
1b4c829e2f42 (number-to-register): Move point as a side effect.
Karl Heuer <kwzh@gnu.org>
parents: 20417
diff changeset
173 (progn
1b4c829e2f42 (number-to-register): Move point as a side effect.
Karl Heuer <kwzh@gnu.org>
parents: 20417
diff changeset
174 (goto-char (match-end 0))
51057
afc4352d55f3 (number-to-register): Use `string-to-number' instead
John Paul Wallington <jpw@pobox.com>
parents: 49597
diff changeset
175 (string-to-number (match-string 0)))
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
176 0))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
178 (defun increment-register (number register)
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
179 "Add NUMBER to the contents of register REGISTER.
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
180 Interactively, NUMBER is the prefix arg."
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
181 (interactive "p\ncIncrement register: ")
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
182 (or (numberp (get-register register))
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
183 (error "Register does not contain a number"))
20675
483ae4df691a (number-to-register, increment-register): Args
Karl Heuer <kwzh@gnu.org>
parents: 20511
diff changeset
184 (set-register register (+ number (get-register register))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
186 (defun view-register (register)
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 "Display what is contained in register named REGISTER.
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
188 The Lisp value REGISTER is a character."
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (interactive "cView register: ")
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
190 (let ((val (get-register register)))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (if (null val)
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
192 (message "Register %s is empty" (single-key-description register))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (with-output-to-temp-buffer "*Output*"
43170
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
194 (describe-register-1 register t)))))
2203
12e9bc8a4a7f * register.el (view-register): Neglect not to avoid failing to
Jim Blandy <jimb@redhat.com>
parents: 2202
diff changeset
195
43170
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
196 (defun list-registers ()
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
197 "Display a list of nonempty registers saying briefly what they contain."
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
198 (interactive)
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
199 (let ((list (copy-sequence register-alist)))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
200 (setq list (sort list (lambda (a b) (< (car a) (car b)))))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
201 (with-output-to-temp-buffer "*Output*"
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
202 (dolist (elt list)
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
203 (when (get-register (car elt))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
204 (describe-register-1 (car elt))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
205 (terpri))))))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
206
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
207 (defun describe-register-1 (register &optional verbose)
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
208 (princ "Register ")
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
209 (princ (single-key-description register))
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
210 (princ " contains ")
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
211 (let ((val (get-register register)))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
212 (cond
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
213 ((numberp val)
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
214 (princ val))
2203
12e9bc8a4a7f * register.el (view-register): Neglect not to avoid failing to
Jim Blandy <jimb@redhat.com>
parents: 2202
diff changeset
215
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
216 ((markerp val)
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
217 (let ((buf (marker-buffer val)))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
218 (if (null buf)
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
219 (princ "a marker in no buffer")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
220 (princ "a buffer position:\n buffer ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
221 (princ (buffer-name buf))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
222 (princ ", position ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
223 (princ (marker-position val)))))
2203
12e9bc8a4a7f * register.el (view-register): Neglect not to avoid failing to
Jim Blandy <jimb@redhat.com>
parents: 2202
diff changeset
224
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
225 ((and (consp val) (window-configuration-p (car val)))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
226 (princ "a window configuration."))
43170
a2f11ee215ea (list-registers): New command.
Richard M. Stallman <rms@gnu.org>
parents: 38412
diff changeset
227
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
228 ((and (consp val) (frame-configuration-p (car val)))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
229 (princ "a frame configuration."))
2203
12e9bc8a4a7f * register.el (view-register): Neglect not to avoid failing to
Jim Blandy <jimb@redhat.com>
parents: 2202
diff changeset
230
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
231 ((and (consp val) (eq (car val) 'file))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
232 (princ "the file ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
233 (prin1 (cdr val))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
234 (princ "."))
3656
c57aec7e822b (view-register): Handle file name values.
Richard M. Stallman <rms@gnu.org>
parents: 3039
diff changeset
235
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
236 ((and (consp val) (eq (car val) 'file-query))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
237 (princ "a file-query reference:\n file ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
238 (prin1 (car (cdr val)))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
239 (princ ",\n position ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
240 (princ (car (cdr (cdr val))))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
241 (princ "."))
20511
9a051580fa02 (view-register): Show register type file-query.
Richard M. Stallman <rms@gnu.org>
parents: 20430
diff changeset
242
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
243 ((consp val)
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
244 (if verbose
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
245 (progn
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
246 (princ "the rectangle:\n")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
247 (while val
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
248 (princ " ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
249 (princ (car val))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
250 (terpri)
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
251 (setq val (cdr val))))
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
252 (princ "a rectangle starting with ")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
253 (princ (car val))))
2203
12e9bc8a4a7f * register.el (view-register): Neglect not to avoid failing to
Jim Blandy <jimb@redhat.com>
parents: 2202
diff changeset
254
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
255 ((stringp val)
60281
90ca0ff28286 (describe-register-1): Explicitly handle yank-excluded-properties = t.
Richard M. Stallman <rms@gnu.org>
parents: 54406
diff changeset
256 (if (eq yank-excluded-properties t)
90ca0ff28286 (describe-register-1): Explicitly handle yank-excluded-properties = t.
Richard M. Stallman <rms@gnu.org>
parents: 54406
diff changeset
257 (set-text-properties 0 (length val) nil val)
90ca0ff28286 (describe-register-1): Explicitly handle yank-excluded-properties = t.
Richard M. Stallman <rms@gnu.org>
parents: 54406
diff changeset
258 (remove-list-of-text-properties 0 (length val)
90ca0ff28286 (describe-register-1): Explicitly handle yank-excluded-properties = t.
Richard M. Stallman <rms@gnu.org>
parents: 54406
diff changeset
259 yank-excluded-properties val))
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
260 (if verbose
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
261 (progn
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
262 (princ "the text:\n")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
263 (princ val))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48715
diff changeset
264 (cond
48715
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
265 ;; Extract first N characters starting with first non-whitespace.
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
266 ((string-match (format "[^ \t\n].\\{,%d\\}"
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
267 ;; Deduct 6 for the spaces inserted below.
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
268 (min 20 (max 0 (- (window-width) 6))))
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
269 val)
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
270 (princ "text starting with\n ")
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
271 (princ (match-string 0 val)))
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
272 ((string-match "^[ \t\n]+$" val)
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
273 (princ "whitespace"))
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
274 (t
1e0c7ad65f05 (describe-register-1): Use window-width
Richard M. Stallman <rms@gnu.org>
parents: 48451
diff changeset
275 (princ "the empty string")))))
43291
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
276 (t
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
277 (princ "Garbage:\n")
d6866cd43406 (describe-register-1): Access register contents here.
Richard M. Stallman <rms@gnu.org>
parents: 43170
diff changeset
278 (if verbose (prin1 val))))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
280 (defun insert-register (register &optional arg)
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
281 "Insert contents of register REGISTER. (REGISTER is a character.)
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 Normally puts point before and mark after the inserted text.
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 If optional second arg is non-nil, puts mark before and point after.
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 Interactively, second arg is non-nil if prefix arg is supplied."
8812
36f7b14b38e3 (insert-register): Add `*' interactive spec.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
285 (interactive "*cInsert register: \nP")
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (push-mark)
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
287 (let ((val (get-register register)))
6336
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
288 (cond
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
289 ((consp val)
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
290 (insert-rectangle val))
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
291 ((stringp val)
44677
b8ccc58cc821 (insert-register): Use insert-for-yank.
Richard M. Stallman <rms@gnu.org>
parents: 43291
diff changeset
292 (insert-for-yank val))
20417
01d602ca5dcf (frame-configuration-to-register)
Karl Heuer <kwzh@gnu.org>
parents: 20324
diff changeset
293 ((numberp val)
6336
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
294 (princ val (current-buffer)))
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
295 ((and (markerp val) (marker-position val))
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
296 (princ (marker-position val) (current-buffer)))
106034
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
297 ((and (fboundp 'semantic-foreign-tag-p)
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
298 semantic-mode
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
299 (semantic-foreign-tag-p val))
4ff5c9cf147f * register.el (jump-to-register, insert-register): Handle Semantic
Chong Yidong <cyd@stupidchicken.com>
parents: 105128
diff changeset
300 (semantic-insert-foreign-tag val))
6336
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
301 (t
d7f922a411f9 (view-register, insert-register): Handle dead marker.
Karl Heuer <kwzh@gnu.org>
parents: 4932
diff changeset
302 (error "Register does not contain text"))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (if (not arg) (exchange-point-and-mark)))
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
305 (defun copy-to-register (register start end &optional delete-flag)
102508
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
306 "Copy region into register REGISTER.
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
307 With prefix arg, delete as well.
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
308 Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 START and END are buffer positions indicating what to copy."
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (interactive "cCopy to register: \nr\nP")
61112
c0f29f51c65c (copy-to-register, append-to-register, prepend-to-register):
Richard M. Stallman <rms@gnu.org>
parents: 60281
diff changeset
311 (set-register register (filter-buffer-substring start end))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 (if delete-flag (delete-region start end)))
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
314 (defun append-to-register (register start end &optional delete-flag)
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
315 "Append region to text in register REGISTER.
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
316 With prefix arg, delete as well.
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
317 Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 START and END are buffer positions indicating what to append."
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (interactive "cAppend to register: \nr\nP")
85914
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
320 (let ((reg (get-register register))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
321 (text (filter-buffer-substring start end)))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
322 (set-register
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
323 register (cond ((not reg) text)
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
324 ((stringp reg) (concat reg text))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
325 (t (error "Register does not contain text")))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (if delete-flag (delete-region start end)))
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
328 (defun prepend-to-register (register start end &optional delete-flag)
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
329 "Prepend region to text in register REGISTER.
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
330 With prefix arg, delete as well.
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
331 Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 START and END are buffer positions indicating what to prepend."
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 (interactive "cPrepend to register: \nr\nP")
85914
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
334 (let ((reg (get-register register))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
335 (text (filter-buffer-substring start end)))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
336 (set-register
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
337 register (cond ((not reg) text)
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
338 ((stringp reg) (concat text reg))
b51c8db87a41 (append-to-register, prepend-to-register):
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 78236
diff changeset
339 (t (error "Register does not contain text")))))
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (if delete-flag (delete-region start end)))
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
342 (defun copy-rectangle-to-register (register start end &optional delete-flag)
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
343 "Copy rectangular region into register REGISTER.
102508
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
344 With prefix arg, delete as well.
13b4ea6830b5 * register.el (get-register): Rename arg REG to REGISTER for
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
345 To insert this register in the buffer, use \\[insert-register].
53410
ce3a88ca37ee (copy-rectangle-to-register): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
346
ce3a88ca37ee (copy-rectangle-to-register): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
347 Called from a program, takes four args: REGISTER, START, END and DELETE-FLAG.
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 START and END are buffer positions giving two corners of rectangle."
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 (interactive "cCopy rectangle to register: \nr\nP")
13009
a418156c25ea Rename all register-name args to `register'.
Richard M. Stallman <rms@gnu.org>
parents: 8812
diff changeset
350 (set-register register
47
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (if delete-flag
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 (delete-extract-rectangle start end)
dfec464ac265 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (extract-rectangle start end))))
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 243
diff changeset
354
54406
1647b704e48e Provide `register' feature.
Masatake YAMATO <jet@gyve.org>
parents: 53410
diff changeset
355 (provide 'register)
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
356 ;; arch-tag: ce14dd68-8265-475f-9341-5d4ec5a53035
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 243
diff changeset
357 ;;; register.el ends here