From cb42456fc6d08f5e9db5f8c33d1647b248eb79c5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Thu, 17 May 2012 00:03:04 -0300 Subject: [PATCH] Don't deactivate mark after indenting commands --- lisp/progmodes/python.el | 63 +++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 3863a9f851e..7da5599d6f0 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -720,24 +720,25 @@ point is not in between the indentation." "Indent a python region automagically. Called from a program, START and END specify the region to indent." - (save-excursion - (goto-char end) - (setq end (point-marker)) - (goto-char start) - (or (bolp) (forward-line 1)) - (while (< (point) end) - (or (and (bolp) (eolp)) - (let (word) - (forward-line -1) - (back-to-indentation) - (setq word (current-word)) - (forward-line 1) - (when word - (beginning-of-line) - (delete-horizontal-space) - (indent-to (python-indent-calculate-indentation))))) - (forward-line 1)) - (move-marker end nil))) + (let ((deactivate-mark nil)) + (save-excursion + (goto-char end) + (setq end (point-marker)) + (goto-char start) + (or (bolp) (forward-line 1)) + (while (< (point) end) + (or (and (bolp) (eolp)) + (let (word) + (forward-line -1) + (back-to-indentation) + (setq word (current-word)) + (forward-line 1) + (when word + (beginning-of-line) + (delete-horizontal-space) + (indent-to (python-indent-calculate-indentation))))) + (forward-line 1)) + (move-marker end nil)))) (defun python-indent-shift-left (start end &optional count) "Shift lines contained in region START END by COUNT columns to the left. @@ -758,14 +759,15 @@ than COUNT columns." (setq count (prefix-numeric-value count)) (setq count python-indent-offset)) (when (> count 0) - (save-excursion - (goto-char start) - (while (< (point) end) - (if (and (< (current-indentation) count) - (not (looking-at "[ \t]*$"))) - (error "Can't shift all lines enough")) - (forward-line)) - (indent-rigidly start end (- count))))) + (let ((deactivate-mark nil)) + (save-excursion + (goto-char start) + (while (< (point) end) + (if (and (< (current-indentation) count) + (not (looking-at "[ \t]*$"))) + (error "Can't shift all lines enough")) + (forward-line)) + (indent-rigidly start end (- count)))))) (add-to-list 'debug-ignored-errors "^Can't shift all lines enough") @@ -782,10 +784,11 @@ lie." (if mark-active (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg))) - (if count - (setq count (prefix-numeric-value count)) - (setq count python-indent-offset)) - (indent-rigidly start end count)) + (let ((deactivate-mark nil)) + (if count + (setq count (prefix-numeric-value count)) + (setq count python-indent-offset)) + (indent-rigidly start end count))) ;; Directly from Dave Love's python.el (defun python-indent-electric-colon (arg) -- 2.39.5