diff options
| author | Jambunathan K | 2012-09-08 16:09:06 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-09-08 16:09:06 -0400 |
| commit | 0979429b332b515b149453277dd7867c76fed51e (patch) | |
| tree | df72103d87ce64abd07dda5ff3c3b40eacf7698e | |
| parent | ace2989a842a84483702cbef6284fe7a8300e18a (diff) | |
| download | emacs-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/ChangeLog | 12 | ||||
| -rw-r--r-- | doc/emacs/regs.texi | 26 | ||||
| -rw-r--r-- | etc/NEWS | 7 | ||||
| -rw-r--r-- | lisp/ChangeLog | 18 | ||||
| -rw-r--r-- | lisp/register.el | 51 |
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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-09-07 Chong Yidong <cyd@gnu.org> | 7 | 2012-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 | ||
| 11 | 2012-08-24 Michael Albinus <michael.albinus@gmx.de> | 17 | 2012-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 | ||
| 17 | 2012-08-14 Eli Zaretskii <eliz@gnu.org> | 23 | 2012-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}). | |||
| 92 | Insert text from register @var{r} (@code{insert-register}). | 92 | Insert 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} |
| 94 | Append region to text in register @var{r}. | 94 | Append region to text in register @var{r}. |
| 95 | |||
| 96 | @kindex C-x r + | ||
| 97 | When register @var{r} contains text, you can use @kbd{C-x r +} | ||
| 98 | (@code{increment-register}) to append to that register. Note that | ||
| 99 | command @kbd{C-x r +} behaves differently if @var{r} contains a | ||
| 100 | number. @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} |
| 96 | Prepend region to text in register @var{r}. | 103 | Prepend 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 | |||
| 116 | the region text to the text in the register instead of | 123 | the 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 | ||
| 129 | collected pieces using a separator. In that case, configure a | ||
| 130 | @code{register-separator} and store the separator text in to that | ||
| 131 | register. For example, to get double newlines as text separator | ||
| 132 | during 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 |
| 194 | Increment the number in register @var{r} by @var{number} | 214 | If @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 | ||
| 217 | text. @xref{Text Registers}. | ||
| 196 | @item C-x r i @var{r} | 218 | @item C-x r i @var{r} |
| 197 | Insert the number from register @var{r} into the buffer. | 219 | Insert the number from register @var{r} into the buffer. |
| 198 | @end table | 220 | @end table |
| @@ -182,6 +182,13 @@ just removing them, as done by `yank-excluded-properties'. | |||
| 182 | delete-trailing-whitespace command should delete trailing lines at the | 182 | delete-trailing-whitespace command should delete trailing lines at the |
| 183 | end of the buffer. It defaults to t. | 183 | end 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 | ||
| 189 | separator text for use with M-x append-to-register and M-x | ||
| 190 | prepend-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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-09-08 Alan Mackenzie <acm@muc.de> | 11 | 2012-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 | ||
| 9 | 2012-09-08 Dmitry Gutov <dgutov@yandex.ru> | 19 | 2012-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 | ||
| 14 | 2012-09-08 Chong Yidong <cyd@gnu.org> | 24 | 2012-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) | |||
| 76 | A list of the form (FRAME-CONFIGURATION POSITION) | 76 | A 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 | |||
| 87 | When collecting text with | ||
| 88 | `append-to-register' (resp. `prepend-to-register') contents of | ||
| 89 | this register is added to the beginning (resp. end) of the marked | ||
| 90 | text." | ||
| 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. |
| 197 | Interactively, NUMBER is the prefix arg." | 213 | Interactively, PREFIX is in raw form. |
| 198 | (interactive "p\ncIncrement register: ") | 214 | |
| 199 | (or (numberp (get-register register)) | 215 | If REGISTER contains a number, add `prefix-numeric-value' of |
| 200 | (error "Register does not contain a number")) | 216 | PREFIX to it. |
| 201 | (set-register register (+ number (get-register register)))) | 217 | |
| 218 | If 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. | |||
| 349 | START and END are buffer positions indicating what to append." | 376 | START 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. | |||
| 366 | START and END are buffer positions indicating what to prepend." | 394 | START 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)) |