Index: etc/NEWS =================================================================== RCS file: /cvsroot/emacs/emacs/etc/NEWS,v retrieving revision 1.597 diff -u -r1.597 NEWS --- etc/NEWS 12 Feb 2002 18:58:21 -0000 1.597 +++ etc/NEWS 14 Feb 2002 09:02:28 -0000 @@ -240,9 +240,12 @@ example, if you set `jit-lock-defer-time' to 0.25, fontification will only happen after 0.25s of idle time. -** If you hit M-C-SPC (mark-sexp) repeatedly, the marked region -will now be extended each time, so you can mark the next two sexps with -M-C-SPC M-C-SPC, for example. +** Marking commands extend the region when invoked multiple times. If +you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or +C-M-h (mark-defun) repeatedly, the marked region will now be extended +each time, so you can mark the next two sexps with M-C-SPC M-C-SPC, +for example. This feature also works for mark-end-of-sentence, if you +bind that to a key. ** In the *Occur* buffer, `o' switches to it in another window, and C-o displays the current line's occurrence in another window without Index: lisp/ChangeLog =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v retrieving revision 1.3444 diff -u -r1.3444 ChangeLog --- lisp/ChangeLog 14 Feb 2002 01:55:43 -0000 1.3444 +++ lisp/ChangeLog 14 Feb 2002 09:02:29 -0000 @@ -1,3 +1,9 @@ +2002-02-13 Kai Großjohann + + * simple.el (mark-word): Mark more if repeated. + * textmodes/paragraphs.el (mark-paragraph): Ditto. + (mark-end-of-sentence): Ditto. + 2002-02-13 Kim F. Storm * cus-start.el (mode-line-in-non-selected-windows): @@ -90,7 +96,7 @@ * cus-start.el: Don't warn about "x-*" symbols when building a non-GUI version. -2002-02-11 Pavel Janík +2002-02-11 Pavel Janík * strokes.el (strokes-do-stroke, strokes-do-complex-stroke): Doc fix. @@ -116,7 +122,7 @@ (dump-charsets, dump-codings): Deleted (obsolete). From Dave Love . -2002-02-10 Pavel Janík +2002-02-10 Pavel Janík * menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling. @@ -140,7 +146,7 @@ * ediff.el: typo in comment. -2002-02-09 Pavel Janík +2002-02-09 Pavel Janík * menu-bar.el (menu-bar-options-save): Take care of line-number-mode and column-number-mode variables. @@ -8564,7 +8570,7 @@ (toplevel): Add completion-list-mode-finish to temp-buffer-show-hook. * language/european.el ("Polish"): Change sample text. - From jsbien@mimuw.edu.pl (Janusz S. Bień). + From jsbien@mimuw.edu.pl (Janusz S. Bień). * progmodes/sh-script.el (sh-indent-line): Add optional PREFIX-ARG parameter. Index: lisp/simple.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/simple.el,v retrieving revision 1.520 diff -u -r1.520 simple.el --- lisp/simple.el 6 Feb 2002 15:08:45 -0000 1.520 +++ lisp/simple.el 14 Feb 2002 09:02:29 -0000 @@ -2812,10 +2812,14 @@ (forward-word (- arg))) (defun mark-word (arg) - "Set mark arg words away from point." + "Set mark arg words away from point. +If this command is repeated, it marks the next ARG words after the ones +already marked." (interactive "p") (push-mark - (save-excursion + (save-excursion + (if (and (eq last-command this-command) (mark t)) + (goto-char (mark))) (forward-word arg) (point)) nil t)) Index: lisp/emacs-lisp/lisp.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/lisp.el,v retrieving revision 1.44 diff -u -r1.44 lisp.el --- lisp/emacs-lisp/lisp.el 11 Jan 2002 21:22:28 -0000 1.44 +++ lisp/emacs-lisp/lisp.el 14 Feb 2002 09:02:29 -0000 @@ -250,13 +250,21 @@ (defun mark-defun () "Put mark at end of this defun, point at beginning. -The defun marked is the one that contains point or follows point." +The defun marked is the one that contains point or follows point. +If this command is repeated, marks more defuns after the ones +already marked." (interactive) - (push-mark (point)) - (end-of-defun) - (push-mark (point) nil t) - (beginning-of-defun) - (re-search-backward "^\n" (- (point) 1) t)) + (let (here) + (when (and (eq last-command this-command) (mark t)) + (setq here (point)) + (goto-char (mark))) + (push-mark (point)) + (end-of-defun) + (push-mark (point) nil t) + (if here + (goto-char here) + (beginning-of-defun) + (re-search-backward "^\n" (- (point) 1) t)))) (defun narrow-to-defun (&optional arg) "Make text outside current defun invisible. Index: lisp/textmodes/paragraphs.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/textmodes/paragraphs.el,v retrieving revision 1.58 diff -u -r1.58 paragraphs.el --- lisp/textmodes/paragraphs.el 30 Nov 2001 17:18:26 -0000 1.58 +++ lisp/textmodes/paragraphs.el 14 Feb 2002 09:02:29 -0000 @@ -325,14 +325,23 @@ the number of paragraphs marked equals ARG. If ARG is negative, point is put at end of this paragraph, mark is put -at beginning of this or a previous paragraph." +at beginning of this or a previous paragraph. + +If this command is repeated, it marks the next ARG paragraphs after (or +before, if arg is negative) the ones already marked." (interactive "p") - (unless arg (setq arg 1)) - (when (zerop arg) - (error "Cannot mark zero paragraphs")) - (forward-paragraph arg) - (push-mark nil t t) - (backward-paragraph arg)) + (let (here) + (unless arg (setq arg 1)) + (when (zerop arg) + (error "Cannot mark zero paragraphs")) + (when (and (eq last-command this-command) (mark t)) + (setq here (point)) + (goto-char (mark))) + (forward-paragraph arg) + (push-mark nil t t) + (if here + (goto-char here) + (backward-paragraph arg)))) (defun kill-paragraph (arg) "Kill forward to end of paragraph. @@ -424,13 +433,17 @@ (kill-region (point) (progn (backward-sentence arg) (point)))) (defun mark-end-of-sentence (arg) - "Put mark at end of sentence. Arg works as in `forward-sentence'." + "Put mark at end of sentence. Arg works as in `forward-sentence'. +If this command is repeated, it marks the next ARG sentences after the +ones already marked." (interactive "p") (push-mark - (save-excursion - (forward-sentence arg) - (point)) - nil t)) + (save-excursion + (if (and (eq last-command this-command) (mark t)) + (goto-char (mark))) + (forward-sentence arg) + (point)) + nil t)) (defun transpose-sentences (arg) "Interchange this (next) and previous sentence." Index: man/mark.texi =================================================================== RCS file: /cvsroot/emacs/emacs/man/mark.texi,v retrieving revision 1.18 diff -u -r1.18 mark.texi --- man/mark.texi 3 Dec 2001 00:04:41 -0000 1.18 +++ man/mark.texi 14 Feb 2002 09:02:29 -0000 @@ -278,7 +278,9 @@ @kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next balanced expression (@pxref{Expressions}). These commands handle -arguments just like @kbd{M-f} and @kbd{C-M-f}. +arguments just like @kbd{M-f} and @kbd{C-M-f}. If you repeat these +commands, the region is extended. For example, you can type either +@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words. @kindex C-x h @findex mark-whole-buffer @@ -292,17 +294,20 @@ point. If the prefix argument is @minus{}@var{n}, @kbd{M-h} also marks @var{n} paragraphs, running back form the one surrounding point. In that last case, point moves forward to the end of that paragraph, -and the mark goes at the start of the region. +and the mark goes at the start of the region. The @kbd{M-h} command +also supports the extension of the region, similar to @kbd{M-@} and +@kbd{C-M-@@}. @kbd{C-M-h} (@code{mark-defun}) similarly puts point before, and the mark after, the current (or following) major top-level definition, or -defun (@pxref{Moving by Defuns}). (Currently it only marks one -defun.) @kbd{C-x C-p} (@code{mark-page}) puts point before the -current page, and mark at the end (@pxref{Pages}). The mark goes -after the terminating page delimiter (to include it in the region), -while point goes after the preceding page delimiter (to exclude it). -A numeric argument specifies a later page (if positive) or an earlier -page (if negative) instead of the current page. +defun (@pxref{Moving by Defuns}). (Currently it only marks one defun, +but repeating it marks more defuns, like for @kbd{M-@@}.) @kbd{C-x +C-p} (@code{mark-page}) puts point before the current page, and mark +at the end (@pxref{Pages}). The mark goes after the terminating page +delimiter (to include it in the region), while point goes after the +preceding page delimiter (to exclude it). A numeric argument +specifies a later page (if positive) or an earlier page (if negative) +instead of the current page. Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire buffer as the region, by putting point at the beginning and the mark at