diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-01-07 13:08:45 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-01-07 13:08:52 +0100 |
commit | 2f6e30cd86a575ef06e8d056fbb6582336f6aadd (patch) | |
tree | de9b39322e130df388badd094d106603f470a1d1 /lisp/textmodes/paragraphs.el | |
parent | 9db1c0993a99853968c021d094eba37c0cae60bb (diff) | |
download | emacs-2f6e30cd86a575ef06e8d056fbb6582336f6aadd.tar.gz |
Revert mark-paragraph change and add tests
* lisp/textmodes/paragraphs.el (mark-paragraph): Revert
eb090f65ceb0ae8a90829e911694348583135ba5 (bug#45318). This restores
the behaviour from Emacs 27 -- further work is needed on this patch.
Diffstat (limited to 'lisp/textmodes/paragraphs.el')
-rw-r--r-- | lisp/textmodes/paragraphs.el | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el index 217ae10fe4d..96edfd6de36 100644 --- a/lisp/textmodes/paragraphs.el +++ b/lisp/textmodes/paragraphs.el @@ -371,50 +371,33 @@ See `forward-paragraph' for more information." (defun mark-paragraph (&optional arg allow-extend) "Put point at beginning of this paragraph, mark at end. -The paragraph marked is the one that contains point or follows -point. +The paragraph marked is the one that contains point or follows point. -With argument ARG, puts mark at the end of this or a following -paragraph, so that the number of paragraphs marked equals ARG. +With argument ARG, puts mark at end of a following paragraph, so that +the number of paragraphs marked equals ARG. -If ARG is negative, point is put at the end of this paragraph, -mark is put at the beginning of this or a previous paragraph. +If ARG is negative, point is put at end of this paragraph, mark is put +at beginning of this or a previous paragraph. Interactively (or if ALLOW-EXTEND is non-nil), if this command is -repeated or (in Transient Mark mode) if the mark is active, it -marks the next ARG paragraphs after the region already marked. -This also means when activating the mark immediately before using -this command, the current paragraph is only marked from point." - (interactive "P\np") - (let ((numeric-arg (prefix-numeric-value arg))) - (cond ((zerop numeric-arg)) - ((and allow-extend - (or (and (eq last-command this-command) mark-active) - (region-active-p))) - (if arg - (setq arg numeric-arg) - (if (< (mark) (point)) - (setq arg -1) - (setq arg 1))) - (set-mark - (save-excursion - (goto-char (mark)) - (forward-paragraph arg) - (point)))) - ;; don't activate the mark when at eob - ((and (eobp) (> numeric-arg 0))) - (t - (unless (save-excursion - (forward-line 0) - (looking-at paragraph-start)) - (backward-paragraph (cond ((> numeric-arg 0) 1) - ((< numeric-arg 0) -1) - (t 0)))) - (push-mark - (save-excursion - (forward-paragraph numeric-arg) - (point)) - t t))))) +repeated or (in Transient Mark mode) if the mark is active, +it marks the next ARG paragraphs after the ones already marked." + (interactive "p\np") + (unless arg (setq arg 1)) + (when (zerop arg) + (error "Cannot mark zero paragraphs")) + (cond ((and allow-extend + (or (and (eq last-command this-command) (mark t)) + (and transient-mark-mode mark-active))) + (set-mark + (save-excursion + (goto-char (mark)) + (forward-paragraph arg) + (point)))) + (t + (forward-paragraph arg) + (push-mark nil t t) + (backward-paragraph arg)))) (defun kill-paragraph (arg) "Kill forward to end of paragraph. |