diff options
Diffstat (limited to 'lisp/progmodes/python.el')
| -rw-r--r-- | lisp/progmodes/python.el | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 95fc52d4d54..5f8d7a29fa6 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -1061,24 +1061,34 @@ Called from a program, START and END specify the region to indent." | |||
| 1061 | (or (bolp) (forward-line 1)) | 1061 | (or (bolp) (forward-line 1)) |
| 1062 | (while (< (point) end) | 1062 | (while (< (point) end) |
| 1063 | (or (and (bolp) (eolp)) | 1063 | (or (and (bolp) (eolp)) |
| 1064 | (let (word) | 1064 | (when (and |
| 1065 | (forward-line -1) | 1065 | ;; Skip if previous line is empty or a comment. |
| 1066 | (back-to-indentation) | 1066 | (save-excursion |
| 1067 | (setq word (current-word)) | 1067 | (let ((line-is-comment-p |
| 1068 | (forward-line 1) | 1068 | (python-info-current-line-comment-p))) |
| 1069 | (when (and word | 1069 | (forward-line -1) |
| 1070 | ;; Don't mess with strings, unless it's the | 1070 | (not |
| 1071 | ;; enclosing set of quotes. | 1071 | (or (and (python-info-current-line-comment-p) |
| 1072 | (or (not (python-syntax-context 'string)) | 1072 | ;; Unless this line is a comment too. |
| 1073 | (eq | 1073 | (not line-is-comment-p)) |
| 1074 | (syntax-after | 1074 | (python-info-current-line-empty-p))))) |
| 1075 | (+ (1- (point)) | 1075 | ;; Don't mess with strings, unless it's the |
| 1076 | (current-indentation) | 1076 | ;; enclosing set of quotes. |
| 1077 | (python-syntax-count-quotes (char-after) (point)))) | 1077 | (or (not (python-syntax-context 'string)) |
| 1078 | (string-to-syntax "|")))) | 1078 | (eq |
| 1079 | (beginning-of-line) | 1079 | (syntax-after |
| 1080 | (delete-horizontal-space) | 1080 | (+ (1- (point)) |
| 1081 | (indent-to (python-indent-calculate-indentation))))) | 1081 | (current-indentation) |
| 1082 | (python-syntax-count-quotes (char-after) (point)))) | ||
| 1083 | (string-to-syntax "|"))) | ||
| 1084 | ;; Skip if current line is a block start, a | ||
| 1085 | ;; dedenter or block ender. | ||
| 1086 | (save-excursion | ||
| 1087 | (back-to-indentation) | ||
| 1088 | (not (looking-at | ||
| 1089 | (python-rx | ||
| 1090 | (or block-start dedenter block-ender)))))) | ||
| 1091 | (python-indent-line))) | ||
| 1082 | (forward-line 1)) | 1092 | (forward-line 1)) |
| 1083 | (move-marker end nil)))) | 1093 | (move-marker end nil)))) |
| 1084 | 1094 | ||