From 2edc489f4f82a72b91624a779f06b488e586507f Mon Sep 17 00:00:00 2001 From: Jens Schmidt Date: Wed, 25 Oct 2023 22:36:15 +0200 Subject: [PATCH] Improve rectangle-mark-mode when transient-mark-mode is off * lisp/rect.el (rectangle-mark-mode-lighter): Add new variable ... (rectangle-mark-mode): ... and use it here to make rectangle-mark-mode more visible. (rectangle-right-char, rectangle-left-char, rectangle-forward-char) (rectangle-backward-char, rectangle-next-line) (rectangle-previous-line): Declare as shift-translatable motion commands. --- lisp/rect.el | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lisp/rect.el b/lisp/rect.el index 8dc188b1de0..f0b5a9b806a 100644 --- a/lisp/rect.el +++ b/lisp/rect.el @@ -646,15 +646,22 @@ rectangle-mark-mode-map " " #'rectangle-next-line " " #'rectangle-previous-line) +(defvar rectangle-mark-mode-lighter nil + "Lighter displayed for `rectangle-mark-mode'.") + ;;;###autoload (define-minor-mode rectangle-mark-mode "Toggle the region as rectangular. Activates the region if it's inactive and Transient Mark mode is on. Only lasts until the region is next deactivated." - :lighter nil + :lighter rectangle-mark-mode-lighter (rectangle--reset-crutches) (when rectangle-mark-mode + ;; Make us more visible when Transient Mark mode is off and there + ;; is no rectangle (bug#XXXXX). + (setq rectangle-mark-mode-lighter + (and (not transient-mark-mode) " Rect")) (advice-add 'region-beginning :around #'rectangle--region-beginning) (advice-add 'region-end :around #'rectangle--region-end) (add-hook 'deactivate-mark-hook @@ -727,29 +734,29 @@ rectangle--*-char (defun rectangle-right-char (&optional n) "Like `right-char' but steps into wide chars and moves past EOL." - (interactive "p") (rectangle--*-char #'right-char n #'left-char)) + (interactive "^p") (rectangle--*-char #'right-char n #'left-char)) (defun rectangle-left-char (&optional n) "Like `left-char' but steps into wide chars and moves past EOL." - (interactive "p") (rectangle--*-char #'left-char n #'right-char)) + (interactive "^p") (rectangle--*-char #'left-char n #'right-char)) (defun rectangle-forward-char (&optional n) "Like `forward-char' but steps into wide chars and moves past EOL." - (interactive "p") (rectangle--*-char #'forward-char n #'backward-char)) + (interactive "^p") (rectangle--*-char #'forward-char n #'backward-char)) (defun rectangle-backward-char (&optional n) "Like `backward-char' but steps into wide chars and moves past EOL." - (interactive "p") (rectangle--*-char #'backward-char n #'forward-char)) + (interactive "^p") (rectangle--*-char #'backward-char n #'forward-char)) (defun rectangle-next-line (&optional n) "Like `next-line' but steps into wide chars and moves past EOL. Ignores `line-move-visual'." - (interactive "p") + (interactive "^p") (let ((col (rectangle--point-col (point)))) (forward-line n) (rectangle--col-pos col 'point))) (defun rectangle-previous-line (&optional n) "Like `previous-line' but steps into wide chars and moves past EOL. Ignores `line-move-visual'." - (interactive "p") + (interactive "^p") (let ((col (rectangle--point-col (point)))) (forward-line (- n)) (rectangle--col-pos col 'point))) -- 2.30.2