aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJambunathan K2012-09-08 16:09:06 -0400
committerStefan Monnier2012-09-08 16:09:06 -0400
commit0979429b332b515b149453277dd7867c76fed51e (patch)
treedf72103d87ce64abd07dda5ff3c3b40eacf7698e
parentace2989a842a84483702cbef6284fe7a8300e18a (diff)
downloademacs-0979429b332b515b149453277dd7867c76fed51e.tar.gz
emacs-0979429b332b515b149453277dd7867c76fed51e.zip
* lisp/register.el (increment-register): Route it to `append-to-register',
if register contains text so that `C-x r +' can now be used for appending to a text register. (register): New group. (register-separator): New user option. (append-to-register, prepend-to-register): Add separator based on `register-separator. * doc/emacs/regs.texi (Text Registers): `C-x r +' can now be used instead of M-x append-to-register. New option `register-separator'. (Number Registers): Mention that `C-x r +' is polymorphic. Fixes: debbugs:12217
-rw-r--r--doc/emacs/ChangeLog12
-rw-r--r--doc/emacs/regs.texi26
-rw-r--r--etc/NEWS7
-rw-r--r--lisp/ChangeLog18
-rw-r--r--lisp/register.el51
5 files changed, 94 insertions, 20 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 49c472ca793..508dbbf8021 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,9 @@
12012-09-08 Jambunathan K <kjambunathan@gmail.com>
2
3 * regs.texi (Text Registers): `C-x r +' can now be used instead of
4 M-x append-to-register. New option `register-separator'.
5 (Number Registers): Mention that `C-x r +' is polymorphic.
6
12012-09-07 Chong Yidong <cyd@gnu.org> 72012-09-07 Chong Yidong <cyd@gnu.org>
2 8
3 * windows.texi (Window Choice): Don't mention obsolete 9 * windows.texi (Window Choice): Don't mention obsolete
@@ -10,9 +16,9 @@
10 16
112012-08-24 Michael Albinus <michael.albinus@gmx.de> 172012-08-24 Michael Albinus <michael.albinus@gmx.de>
12 18
13 * cmdargs.texi (General Variables): Setting 19 * cmdargs.texi (General Variables):
14 $DBUS_SESSION_BUS_ADDRESS to a dummy value suppresses connections 20 Setting $DBUS_SESSION_BUS_ADDRESS to a dummy value suppresses
15 to the D-Bus session bus. (Bug#12112) 21 connections to the D-Bus session bus. (Bug#12112)
16 22
172012-08-14 Eli Zaretskii <eliz@gnu.org> 232012-08-14 Eli Zaretskii <eliz@gnu.org>
18 24
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index 72fd6458dde..0a83c0bdddd 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -92,6 +92,13 @@ Copy region into register @var{r} (@code{copy-to-register}).
92Insert text from register @var{r} (@code{insert-register}). 92Insert text from register @var{r} (@code{insert-register}).
93@item M-x append-to-register @key{RET} @var{r} 93@item M-x append-to-register @key{RET} @var{r}
94Append region to text in register @var{r}. 94Append region to text in register @var{r}.
95
96@kindex C-x r +
97When register @var{r} contains text, you can use @kbd{C-x r +}
98(@code{increment-register}) to append to that register. Note that
99command @kbd{C-x r +} behaves differently if @var{r} contains a
100number. @xref{Number Registers}.
101
95@item M-x prepend-to-register @key{RET} @var{r} 102@item M-x prepend-to-register @key{RET} @var{r}
96Prepend region to text in register @var{r}. 103Prepend region to text in register @var{r}.
97@end table 104@end table
@@ -116,6 +123,19 @@ region after appending it to the register. The command
116the region text to the text in the register instead of 123the region text to the text in the register instead of
117@emph{appending} it. 124@emph{appending} it.
118 125
126@vindex register-separator
127 When you are collecting text using @code{append-to-register} and
128@code{prepend-to-register}, you may want to separate individual
129collected pieces using a separator. In that case, configure a
130@code{register-separator} and store the separator text in to that
131register. For example, to get double newlines as text separator
132during the collection process, you can use the following setting.
133
134@example
135(setq register-separator ?+)
136(set-register register-separator "\n\n")
137@end example
138
119@kindex C-x r i 139@kindex C-x r i
120@findex insert-register 140@findex insert-register
121 @kbd{C-x r i @var{r}} inserts in the buffer the text from register 141 @kbd{C-x r i @var{r}} inserts in the buffer the text from register
@@ -191,8 +211,10 @@ Store @var{number} into register @var{r} (@code{number-to-register}).
191@item C-u @var{number} C-x r + @var{r} 211@item C-u @var{number} C-x r + @var{r}
192@kindex C-x r + 212@kindex C-x r +
193@findex increment-register 213@findex increment-register
194Increment the number in register @var{r} by @var{number} 214If @var{r} contains a number, increment the number in that register by
195(@code{increment-register}). 215@var{number}. Note that command @kbd{C-x r +}
216(@code{increment-register}) behaves differently if @var{r} contains
217text. @xref{Text Registers}.
196@item C-x r i @var{r} 218@item C-x r i @var{r}
197Insert the number from register @var{r} into the buffer. 219Insert the number from register @var{r} into the buffer.
198@end table 220@end table
diff --git a/etc/NEWS b/etc/NEWS
index 5beb47b7b00..742744fc9dd 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -182,6 +182,13 @@ just removing them, as done by `yank-excluded-properties'.
182delete-trailing-whitespace command should delete trailing lines at the 182delete-trailing-whitespace command should delete trailing lines at the
183end of the buffer. It defaults to t. 183end of the buffer. It defaults to t.
184 184
185+++
186** `C-x r +' is now overloaded to invoke `append-to-register.
187+++
188** New option `separator-register'. Separator register stores
189separator text for use with M-x append-to-register and M-x
190prepend-to-register. See manual for details.
191
185** Search changes 192** Search changes
186 193
187*** Global `M-s _' starts a symbol (identifier) incremental search, 194*** Global `M-s _' starts a symbol (identifier) incremental search,
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ea69865c79f..7104f68e816 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,15 +1,25 @@
12012-09-08 Jambunathan K <kjambunathan@gmail.com>
2
3 * register.el (register): New group.
4 (register-separator): New user option.
5 (increment-register): Route it to `append-to-register', if
6 register contains text. Implication is that `C-x r +' can now be
7 used for appending to a text register (bug#12217).
8 (append-to-register, prepend-to-register): Add separator based on
9 `register-separator.
10
12012-09-08 Alan Mackenzie <acm@muc.de> 112012-09-08 Alan Mackenzie <acm@muc.de>
2 12
3 AWK Mode: make auto-newline work when there's "==" in the pattern. 13 AWK Mode: make auto-newline work when there's "==" in the pattern.
4 * progmodes/cc-cmds.el (c-point-syntax): Handle virtual semicolons 14 * progmodes/cc-cmds.el (c-point-syntax): Handle virtual semicolons
5 correctly. 15 correctly.
6 * progmodes/cc-engine.el (c-guess-basic-syntax CASE 5A.3): Test 16 * progmodes/cc-engine.el (c-guess-basic-syntax CASE 5A.3):
7 more rigorously for "=" token. 17 Test more rigorously for "=" token.
8 18
92012-09-08 Dmitry Gutov <dgutov@yandex.ru> 192012-09-08 Dmitry Gutov <dgutov@yandex.ru>
10 20
11 * progmodes/ruby-mode.el (ruby-match-expression-expansion): Only 21 * progmodes/ruby-mode.el (ruby-match-expression-expansion):
12 fail when reached LIMIT. 22 Only fail when reached LIMIT.
13 23
142012-09-08 Chong Yidong <cyd@gnu.org> 242012-09-08 Chong Yidong <cyd@gnu.org>
15 25
diff --git a/lisp/register.el b/lisp/register.el
index 2816c9831de..622a3872e54 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -76,6 +76,22 @@ A list of the form (WINDOW-CONFIGURATION POSITION)
76A list of the form (FRAME-CONFIGURATION POSITION) 76A list of the form (FRAME-CONFIGURATION POSITION)
77 represents a saved frame configuration plus a saved value of point.") 77 represents a saved frame configuration plus a saved value of point.")
78 78
79(defgroup register nil
80 "Register commands."
81 :group 'convenience
82 :version "24.2.50")
83
84(defcustom separator-register nil
85 "Use contents of this register to separate collected text.
86
87When collecting text with
88`append-to-register' (resp. `prepend-to-register') contents of
89this register is added to the beginning (resp. end) of the marked
90text."
91 :group 'register
92 :type '(choice (const :tag "None" nil)
93 (character :tag "Use register" :value ?+)))
94
79(defun get-register (register) 95(defun get-register (register)
80 "Return contents of Emacs register named REGISTER, or nil if none." 96 "Return contents of Emacs register named REGISTER, or nil if none."
81 (cdr (assq register register-alist))) 97 (cdr (assq register register-alist)))
@@ -192,13 +208,24 @@ Interactively, NUMBER is the prefix arg (none means nil)."
192 (string-to-number (match-string 0))) 208 (string-to-number (match-string 0)))
193 0)))) 209 0))))
194 210
195(defun increment-register (number register) 211(defun increment-register (prefix register)
196 "Add NUMBER to the contents of register REGISTER. 212 "Augment contents of REGISTER.
197Interactively, NUMBER is the prefix arg." 213Interactively, PREFIX is in raw form.
198 (interactive "p\ncIncrement register: ") 214
199 (or (numberp (get-register register)) 215If REGISTER contains a number, add `prefix-numeric-value' of
200 (error "Register does not contain a number")) 216PREFIX to it.
201 (set-register register (+ number (get-register register)))) 217
218If REGISTER is empty or if it contains text, call
219`append-to-register' with `delete-flag' set to PREFIX."
220 (interactive "P\ncIncrement register: ")
221 (let ((register-val (get-register register)))
222 (cond
223 ((numberp register-val)
224 (let ((number (prefix-numeric-value prefix)))
225 (set-register register (+ number register-val))))
226 ((or (not register-val) (stringp register-val))
227 (append-to-register register (region-beginning) (region-end) prefix))
228 (t (error "Register does not contain a number or text")))))
202 229
203(defun view-register (register) 230(defun view-register (register)
204 "Display what is contained in register named REGISTER. 231 "Display what is contained in register named REGISTER.
@@ -349,10 +376,11 @@ Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
349START and END are buffer positions indicating what to append." 376START and END are buffer positions indicating what to append."
350 (interactive "cAppend to register: \nr\nP") 377 (interactive "cAppend to register: \nr\nP")
351 (let ((reg (get-register register)) 378 (let ((reg (get-register register))
352 (text (filter-buffer-substring start end))) 379 (text (filter-buffer-substring start end))
380 (separator (and separator-register (get-register separator-register))))
353 (set-register 381 (set-register
354 register (cond ((not reg) text) 382 register (cond ((not reg) text)
355 ((stringp reg) (concat reg text)) 383 ((stringp reg) (concat reg separator text))
356 (t (error "Register does not contain text"))))) 384 (t (error "Register does not contain text")))))
357 (cond (delete-flag 385 (cond (delete-flag
358 (delete-region start end)) 386 (delete-region start end))
@@ -366,10 +394,11 @@ Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
366START and END are buffer positions indicating what to prepend." 394START and END are buffer positions indicating what to prepend."
367 (interactive "cPrepend to register: \nr\nP") 395 (interactive "cPrepend to register: \nr\nP")
368 (let ((reg (get-register register)) 396 (let ((reg (get-register register))
369 (text (filter-buffer-substring start end))) 397 (text (filter-buffer-substring start end))
398 (separator (and separator-register (get-register separator-register))))
370 (set-register 399 (set-register
371 register (cond ((not reg) text) 400 register (cond ((not reg) text)
372 ((stringp reg) (concat text reg)) 401 ((stringp reg) (concat text separator reg))
373 (t (error "Register does not contain text"))))) 402 (t (error "Register does not contain text")))))
374 (cond (delete-flag 403 (cond (delete-flag
375 (delete-region start end)) 404 (delete-region start end))