From 5eae76aed18a165854f55911ab8a5ac2bd83feed Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Thu, 17 May 2012 00:03:42 -0300 Subject: [PATCH] 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' --- lisp/progmodes/python.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 3eed67ab3a4..47e6fc0380d 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -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) -- 2.39.2