diff options
| author | Fabián Ezequiel Gallina | 2014-12-22 02:24:42 -0300 |
|---|---|---|
| committer | Fabián Ezequiel Gallina | 2014-12-22 02:24:42 -0300 |
| commit | 749813e9d4a844384e0450f6f7f88484b15e348a (patch) | |
| tree | 11dacc975324be1c08bf16c4430183fbb624f53b /lisp/progmodes/python.el | |
| parent | 936d5e5bb63358da281188d9c8e9e21341df9444 (diff) | |
| download | emacs-749813e9d4a844384e0450f6f7f88484b15e348a.tar.gz emacs-749813e9d4a844384e0450f6f7f88484b15e348a.zip | |
python.el: Fix electric colon behavior
* lisp/progmodes/python.el (python-indent-post-self-insert-function):
Make colon to re-indent only for dedenters, handling
multiline-statements gracefully.
* test/automated/python-tests.el (python-indent-electric-colon-2)
(python-indent-electric-colon-3): New tests.
Diffstat (limited to 'lisp/progmodes/python.el')
| -rw-r--r-- | lisp/progmodes/python.el | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 357ca5b56d8..6d3916c07a5 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -1175,12 +1175,18 @@ the line will be re-indented automatically if needed." | |||
| 1175 | (eolp) | 1175 | (eolp) |
| 1176 | ;; Avoid re-indenting on extra colon | 1176 | ;; Avoid re-indenting on extra colon |
| 1177 | (not (equal ?: (char-before (1- (point))))) | 1177 | (not (equal ?: (char-before (1- (point))))) |
| 1178 | (not (python-syntax-comment-or-string-p)) | 1178 | (not (python-syntax-comment-or-string-p))) |
| 1179 | ;; Never re-indent at beginning of defun | 1179 | ;; Just re-indent dedenters |
| 1180 | (not (save-excursion | 1180 | (let ((dedenter-pos (python-info-dedenter-statement-p)) |
| 1181 | (python-nav-beginning-of-statement) | 1181 | (current-pos (point))) |
| 1182 | (python-info-looking-at-beginning-of-defun)))) | 1182 | (when dedenter-pos |
| 1183 | (python-indent-line))))) | 1183 | (save-excursion |
| 1184 | (goto-char dedenter-pos) | ||
| 1185 | (python-indent-line) | ||
| 1186 | (unless (= (line-number-at-pos dedenter-pos) | ||
| 1187 | (line-number-at-pos current-pos)) | ||
| 1188 | ;; Reindent region if this is a multiline statement | ||
| 1189 | (python-indent-region dedenter-pos current-pos))))))))) | ||
| 1184 | 1190 | ||
| 1185 | 1191 | ||
| 1186 | ;;; Navigation | 1192 | ;;; Navigation |