+2002-02-17 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * emacs-lisp/lisp.el (mark-defun): Don't leave multiple marks
+ when repeated.
+ * textmodes/paragraphs.el (mark-paragraph): Ditto.
+
2002-02-17 Per Abrahamsen <abraham@dina.kvl.dk>
* menu-bar.el (menu-bar-showhide-menu): Added speedbar.
If this command is repeated, marks more defuns after the ones
already marked."
(interactive)
- (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))))
+ (cond ((and (eq last-command this-command) (mark t))
+ (set-mark
+ (save-excursion
+ (goto-char (mark))
+ (end-of-defun)
+ (point))))
+ (t
+ (push-mark (point))
+ (end-of-defun)
+ (push-mark (point) nil t)
+ (beginning-of-defun)
+ (re-search-backward "^\n" (- (point) 1) t))))
(defun narrow-to-defun (&optional arg)
"Make text outside current defun invisible.
If this command is repeated, it marks the next ARG paragraphs after (or
before, if arg is negative) the ones already marked."
(interactive "p")
- (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))))
+ (unless arg (setq arg 1))
+ (when (zerop arg)
+ (error "Cannot mark zero paragraphs"))
+ (cond ((and (eq last-command this-command) (mark t))
+ (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.