From: Fabián Ezequiel Gallina Date: Thu, 17 May 2012 03:02:53 +0000 (-0300) Subject: Enhanced python-indent-guess-indent-offset logic. X-Git-Tag: emacs-24.2.90~1199^2~629 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=954aa7bdb84f2b84d3ad3c248712c09a710582fa;p=emacs.git Enhanced python-indent-guess-indent-offset logic. --- diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 37a4d029c0f..abe92dd43dd 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -401,14 +401,25 @@ These make `python-indent-calculate-indentation' subtract the value of `python-indent-offset'.") (defun python-indent-guess-indent-offset () - "Guess and set the value for `python-indent-offset' given the current buffer." - (let ((guessed-indentation (save-excursion - (goto-char (point-min)) - (re-search-forward ":\\s-*\n" nil t) - (while (and (not (eobp)) (forward-comment 1))) - (current-indentation)))) - (when (not (equal guessed-indentation 0)) - (setq python-indent-offset guessed-indentation)))) + "Guess and set `python-indent-offset' for the current buffer." + (save-excursion + (let ((found-block)) + (while (and (not found-block) + (re-search-forward + (python-rx line-start block-start) nil t)) + (when (not (syntax-ppss-context (syntax-ppss))) + (setq found-block t))) + (if (not found-block) + (message "Can't guess python-indent-offset, using defaults: %s" + python-indent-offset) + (while (and (progn + (goto-char (line-end-position)) + (python-info-continuation-line-p)) + (not (eobp))) + (forward-line 1)) + (forward-line 1) + (forward-comment 1) + (setq python-indent-offset (current-indentation)))))) (defun python-indent-context (&optional stop) "Return information on indentation context.