]> code.delx.au - gnu-emacs/commitdiff
Backported revisions 2012-12-29T12:33:33Z!fgallina@gnu.org and 2012-12-29T12:57:49Z...
authorFabián Ezequiel Gallina <fgallina@gnu.org>
Mon, 31 Dec 2012 19:27:20 +0000 (16:27 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Mon, 31 Dec 2012 19:27:20 +0000 (16:27 -0300)
lisp/ChangeLog
lisp/progmodes/python.el

index 0bf336cfbe13a81ad6a91b664b3e8ab273b6d0be..6a1ebc7e0e6bf959cf3f2121bba07e173880377b 100644 (file)
@@ -1,3 +1,15 @@
+2012-12-31  Fabián Ezequiel Gallina  <fgallina@cuca>
+
+       * progmodes/python.el: Support other commands triggering
+       python-indent-line so indentation cycling continues to work.
+       (python-indent-trigger-commands): New defcustom.
+       (python-indent-line): Use it.
+
+2012-12-31  Fabián Ezequiel Gallina  <fgallina@cuca>
+
+       * progmodes/python.el (python-shell-send-region): Add blank lines
+       for non sent code so backtraces remain correct.
+
 2012-12-31  Andreas Schwab  <schwab@linux-m68k.org>
 
        * emacs-lisp/byte-run.el (defmacro): Don't lose final nil if
index 98ba437d4efae7a6d907c638c7212cf0231a3020..89b85e1035195d5abdabd54abed8fd8f6db0aeae 100644 (file)
@@ -597,6 +597,12 @@ It makes underscores and dots word constituent chars.")
   :group 'python
   :safe 'booleanp)
 
+(defcustom python-indent-trigger-commands
+  '(indent-for-tab-command yas-expand yas/expand)
+  "Commands that might trigger a `python-indent-line' call."
+  :type '(repeat symbol)
+  :group 'python)
+
 (define-obsolete-variable-alias
   'python-indent 'python-indent-offset "24.3")
 
@@ -895,20 +901,21 @@ Uses the offset calculated in
 indicated by the variable `python-indent-levels' to set the
 current indentation.
 
-When the variable `last-command' is equal to
-`indent-for-tab-command' or FORCE-TOGGLE is non-nil it cycles
-levels indicated in the variable `python-indent-levels' by
-setting the current level in the variable
-`python-indent-current-level'.
-
-When the variable `last-command' is not equal to
-`indent-for-tab-command' and FORCE-TOGGLE is nil it calculates
-possible indentation levels and saves it in the variable
-`python-indent-levels'.  Afterwards it sets the variable
-`python-indent-current-level' correctly so offset is equal
-to (`nth' `python-indent-current-level' `python-indent-levels')"
+When the variable `last-command' is equal to one of the symbols
+inside `python-indent-trigger-commands' or FORCE-TOGGLE is
+non-nil it cycles levels indicated in the variable
+`python-indent-levels' by setting the current level in the
+variable `python-indent-current-level'.
+
+When the variable `last-command' is not equal to one of the
+symbols inside `python-indent-trigger-commands' and FORCE-TOGGLE
+is nil it calculates possible indentation levels and saves it in
+the variable `python-indent-levels'.  Afterwards it sets the
+variable `python-indent-current-level' correctly so offset is
+equal to (`nth' `python-indent-current-level'
+`python-indent-levels')"
   (or
-   (and (or (and (eq this-command 'indent-for-tab-command)
+   (and (or (and (memq this-command python-indent-trigger-commands)
                  (eq last-command this-command))
             force-toggle)
         (not (equal python-indent-levels '(0)))
@@ -1998,7 +2005,14 @@ Returns the output.  See `python-shell-send-string-no-output'."
 (defun python-shell-send-region (start end)
   "Send the region delimited by START and END to inferior Python process."
   (interactive "r")
-  (python-shell-send-string (buffer-substring start end) nil t))
+  (python-shell-send-string
+   (concat
+    (let ((line-num (line-number-at-pos start)))
+      ;; When sending a region, add blank lines for non sent code so
+      ;; backtraces remain correct.
+      (make-string (1- line-num) ?\n))
+    (buffer-substring start end))
+   nil t))
 
 (defun python-shell-send-buffer (&optional arg)
   "Send the entire buffer to inferior Python process.