From 0012c1ec742555b99ad84b02d646361ef07ba42b Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 14 Mar 1995 16:32:55 +0000 Subject: (py-outdent-re): new constant (py-electric-colon): use py-outdent-re instead of hardcoding (py-indent-line): look for py-outdent-re and outdent a level accordingly --- Misc/python-mode.el | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Misc/python-mode.el b/Misc/python-mode.el index 194caa5..07b00f8 100644 --- a/Misc/python-mode.el +++ b/Misc/python-mode.el @@ -290,6 +290,15 @@ Currently-active file is at the head of the list.") (defconst py-blank-or-comment-re "[ \t]*\\($\\|#\\)" "Regexp matching blank or comment lines.") +(defconst py-outdent-re + (concat "\\(" (mapconcat 'identity + '("else:" + "except\\s +.*:" + "finally:" + "elif\\s +.*:") + "\\|") + "\\)") + "Regexp matching clauses to be outdented one level.") ;;;###autoload @@ -374,8 +383,8 @@ argument is provided, that many colons are inserted non-electrically." (let (this-indent) (if (and (not arg) (save-excursion - (forward-word -1) - (looking-at "\\(else\\|except\\|finally\\elif\\):")) + (back-to-indentation) + (looking-at py-outdent-re)) (= (setq this-indent (py-compute-indentation)) (save-excursion (forward-line -1) @@ -604,6 +613,11 @@ needed so that only a single column position is deleted." (let* ((ci (current-indentation)) (move-to-indentation-p (<= (current-column) ci)) (need (py-compute-indentation))) + ;; watch for outdents + (if (save-excursion + (back-to-indentation) + (looking-at py-outdent-re)) + (setq need (- need py-indent-offset))) (if (/= ci need) (save-excursion (beginning-of-line) -- cgit v0.12