Commit cad113ae authored by Kai Großjohann's avatar Kai Großjohann
Browse files

* lisp/simple.el (mark-word): Mark more if repeated.

* lisp/textmodes/paragraphs.el (mark-paragraph): Ditto.
(mark-end-of-sentence): Ditto.
parent 66c8296f
...@@ -245,9 +245,13 @@ idle time in seconds to wait before starting fontification. For ...@@ -245,9 +245,13 @@ idle time in seconds to wait before starting fontification. For
example, if you set `jit-lock-defer-time' to 0.25, fontification will example, if you set `jit-lock-defer-time' to 0.25, fontification will
only happen after 0.25s of idle time. 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 ** Marking commands extend the region when invoked multiple times. If
M-C-SPC M-C-SPC, for example. 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 ** In the *Occur* buffer, `o' switches to it in another window, and
C-o displays the current line's occurrence in another window without C-o displays the current line's occurrence in another window without
......
2002-02-15 Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* simple.el (mark-word): Mark more if repeated.
* textmodes/paragraphs.el (mark-paragraph): Ditto.
(mark-end-of-sentence): Ditto.
2002-02-15 Per Abrahamsen <abraham@dina.kvl.dk> 2002-02-15 Per Abrahamsen <abraham@dina.kvl.dk>
   
* wid-edit.el (widgetp): Made it more robust. * wid-edit.el (widgetp): Made it more robust.
......
...@@ -76,13 +76,18 @@ move to with the same argument. ...@@ -76,13 +76,18 @@ move to with the same argument.
If this command is repeated, it marks the next ARG sexps after the ones If this command is repeated, it marks the next ARG sexps after the ones
already marked." already marked."
(interactive "p") (interactive "p")
(push-mark (cond ((and (eq last-command this-command) (mark t))
(save-excursion (set-mark
(if (and (eq last-command this-command) (mark t)) (save-excursion
(goto-char (mark))) (goto-char (mark))
(forward-sexp (or arg 1)) (forward-sexp (or arg 1))
(point)) (point))))
nil t)) (t
(push-mark
(save-excursion
(forward-sexp (or arg 1))
(point))
nil t))))
(defun forward-list (&optional arg) (defun forward-list (&optional arg)
"Move forward across one balanced group of parentheses. "Move forward across one balanced group of parentheses.
...@@ -250,13 +255,21 @@ is called as a function to find the defun's end." ...@@ -250,13 +255,21 @@ is called as a function to find the defun's end."
(defun mark-defun () (defun mark-defun ()
"Put mark at end of this defun, point at beginning. "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) (interactive)
(push-mark (point)) (let (here)
(end-of-defun) (when (and (eq last-command this-command) (mark t))
(push-mark (point) nil t) (setq here (point))
(beginning-of-defun) (goto-char (mark)))
(re-search-backward "^\n" (- (point) 1) t)) (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) (defun narrow-to-defun (&optional arg)
"Make text outside current defun invisible. "Make text outside current defun invisible.
......
...@@ -2812,13 +2812,22 @@ With argument, do this that many times." ...@@ -2812,13 +2812,22 @@ With argument, do this that many times."
(forward-word (- arg))) (forward-word (- arg)))
(defun mark-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") (interactive "p")
(push-mark (cond ((and (eq last-command this-command) (mark t))
(save-excursion (set-mark
(forward-word arg) (save-excursion
(point)) (goto-char (mark))
nil t)) (forward-word arg)
(point))))
(t
(push-mark
(save-excursion
(forward-word arg)
(point))
nil t))))
(defun kill-word (arg) (defun kill-word (arg)
"Kill characters forward until encountering the end of a word. "Kill characters forward until encountering the end of a word.
......
...@@ -325,14 +325,23 @@ With argument ARG, puts mark at end of a following paragraph, so that ...@@ -325,14 +325,23 @@ With argument ARG, puts mark at end of a following paragraph, so that
the number of paragraphs marked equals ARG. the number of paragraphs marked equals ARG.
If ARG is negative, point is put at end of this paragraph, mark is put 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") (interactive "p")
(unless arg (setq arg 1)) (let (here)
(when (zerop arg) (unless arg (setq arg 1))
(error "Cannot mark zero paragraphs")) (when (zerop arg)
(forward-paragraph arg) (error "Cannot mark zero paragraphs"))
(push-mark nil t t) (when (and (eq last-command this-command) (mark t))
(backward-paragraph arg)) (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) (defun kill-paragraph (arg)
"Kill forward to end of paragraph. "Kill forward to end of paragraph.
...@@ -424,13 +433,17 @@ With arg, repeat, or kill forward to Nth end of sentence if negative arg -N." ...@@ -424,13 +433,17 @@ With arg, repeat, or kill forward to Nth end of sentence if negative arg -N."
(kill-region (point) (progn (backward-sentence arg) (point)))) (kill-region (point) (progn (backward-sentence arg) (point))))
(defun mark-end-of-sentence (arg) (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") (interactive "p")
(push-mark (push-mark
(save-excursion (save-excursion
(forward-sentence arg) (if (and (eq last-command this-command) (mark t))
(point)) (goto-char (mark)))
nil t)) (forward-sentence arg)
(point))
nil t))
(defun transpose-sentences (arg) (defun transpose-sentences (arg)
"Interchange this (next) and previous sentence." "Interchange this (next) and previous sentence."
......
...@@ -278,7 +278,9 @@ Put region around current page (@code{mark-page}). ...@@ -278,7 +278,9 @@ Put region around current page (@code{mark-page}).
@kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next @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 word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the
next balanced expression (@pxref{Expressions}). These commands handle 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 @kindex C-x h
@findex mark-whole-buffer @findex mark-whole-buffer
...@@ -292,17 +294,20 @@ paragraph. With prefix argument, if the argument's value is positive, ...@@ -292,17 +294,20 @@ paragraph. With prefix argument, if the argument's value is positive,
point. If the prefix argument is @minus{}@var{n}, @kbd{M-h} also point. If the prefix argument is @minus{}@var{n}, @kbd{M-h} also
marks @var{n} paragraphs, running back form the one surrounding point. marks @var{n} paragraphs, running back form the one surrounding point.
In that last case, point moves forward to the end of that paragraph, 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 @kbd{C-M-h} (@code{mark-defun}) similarly puts point before, and the
mark after, the current (or following) major top-level definition, or mark after, the current (or following) major top-level definition, or
defun (@pxref{Moving by Defuns}). (Currently it only marks one defun (@pxref{Moving by Defuns}). (Currently it only marks one defun,
defun.) @kbd{C-x C-p} (@code{mark-page}) puts point before the but repeating it marks more defuns, like for @kbd{M-@@}.) @kbd{C-x
current page, and mark at the end (@pxref{Pages}). The mark goes C-p} (@code{mark-page}) puts point before the current page, and mark
after the terminating page delimiter (to include it in the region), at the end (@pxref{Pages}). The mark goes after the terminating page
while point goes after the preceding page delimiter (to exclude it). delimiter (to include it in the region), while point goes after the
A numeric argument specifies a later page (if positive) or an earlier preceding page delimiter (to exclude it). A numeric argument
page (if negative) instead of the current page. 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 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 buffer as the region, by putting point at the beginning and the mark at
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment