Commit 5eae76ae authored by Fabián Ezequiel Gallina's avatar Fabián Ezequiel Gallina Committed by Fabián Ezequiel Gallina

Readjust indentation automatically on lines with closing parens.

For this to work `python-indent-post-self-insert-function' is added to
the `post-self-insert-hook.' when python-mode is initialized.

New functions:
 + `python-indent-post-self-insert-function'
parent 90a41b9d
......@@ -990,6 +990,27 @@ With numeric ARG, just insert that many colons. With
(indent-line-to indentation)))))))
(put 'python-indent-electric-colon 'delete-selection t)
(defun python-indent-post-self-insert-function ()
"Adjust closing paren line indentation after a char is added.
This function is intended to be added to the
`post-self-insert-hook.' If a line renders a paren alone, after
adding a char before it, the line will be re-indented
automatically if needed."
(when (and (eq (char-before) last-command-event)
(= (current-indentation) 0)
(not (bolp))
(memq (char-after) '(?\) ?\] ?\})))
(let ((indentation (save-excursion
;; If after going to the beginning of line the point
;; is still inside a paren it's ok to do the trick
(goto-char (line-beginning-position))
(when (python-info-ppss-context 'paren)
(python-indent-calculate-indentation)))))
(when (and indentation
(< (current-indentation) indentation))
(save-excursion
(indent-line-to indentation))))))
;;; Navigation
......@@ -2778,6 +2799,9 @@ if that value is non-nil."
(add-hook 'completion-at-point-functions
'python-completion-complete-at-point nil 'local)
(add-hook 'post-self-insert-hook
'python-indent-post-self-insert-function nil 'local)
(setq imenu-create-index-function #'python-imenu-create-index)
(set (make-local-variable 'add-log-current-defun-function)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment