Make "case" keyword a dedenter in Python
* lisp/progmodes/python.el (python-rx): Add "case" to dedenter. (python-info-dedenter-opening-block-positions): Add "case" to pairs. * test/lisp/progmodes/python-tests.el (python-indent-dedenters-9): New test.
This commit is contained in:
parent
db178517ce
commit
c0cf69f7a1
2 changed files with 18 additions and 2 deletions
|
@ -426,7 +426,7 @@ This variant of `rx' supports common Python named REGEXPS."
|
|||
(or "def" "for" "with")))
|
||||
symbol-end))
|
||||
(dedenter (seq symbol-start
|
||||
(or "elif" "else" "except" "finally")
|
||||
(or "elif" "else" "except" "finally" "case")
|
||||
symbol-end))
|
||||
(block-ender (seq symbol-start
|
||||
(or
|
||||
|
@ -5783,7 +5783,8 @@ likely an invalid python file."
|
|||
(pairs '(("elif" "elif" "if")
|
||||
("else" "if" "elif" "except" "for" "while")
|
||||
("except" "except" "try")
|
||||
("finally" "else" "except" "try")))
|
||||
("finally" "else" "except" "try")
|
||||
("case" "case")))
|
||||
(dedenter (match-string-no-properties 0))
|
||||
(possible-opening-blocks (cdr (assoc-string dedenter pairs)))
|
||||
(collected-indentations)
|
||||
|
|
|
@ -1658,6 +1658,21 @@ a == 4):
|
|||
(python-indent-line t)
|
||||
(should (= (python-indent-calculate-indentation t) 6))))
|
||||
|
||||
(ert-deftest python-indent-dedenters-9 ()
|
||||
"Test de-indentation for the case keyword."
|
||||
(python-tests-with-temp-buffer
|
||||
"
|
||||
match a:
|
||||
case 1:
|
||||
print(1)
|
||||
case 2
|
||||
"
|
||||
(python-tests-look-at "case 2")
|
||||
(should (eq (car (python-indent-context)) :at-dedenter-block-start))
|
||||
(should (= (python-indent-calculate-indentation) 4))
|
||||
(python-indent-line t)
|
||||
(should (= (python-indent-calculate-indentation t) 4))))
|
||||
|
||||
(ert-deftest python-indent-inside-string-1 ()
|
||||
"Test indentation for strings."
|
||||
(python-tests-with-temp-buffer
|
||||
|
|
Loading…
Add table
Reference in a new issue