From 6da55e5931e899acb1b7da2206967aa56da3ca0f Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Thu, 17 May 2012 00:03:39 -0300 Subject: [PATCH] Don't send "if __name__ == '__main__':" to interpreter --- lisp/progmodes/python.el | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 59802cca623..16a3befc3f2 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -320,6 +320,10 @@ `(decorator . ,(rx line-start (* space) ?@ (any letter ?_) (* (any word ?_)))) `(defun . ,(rx symbol-start (or "def" "class") symbol-end)) + `(if-name-main . ,(rx line-start "if" (+ space) "__name__" + (+ space) "==" (+ space) + (any ?' ?\") "__main__" (any ?' ?\") + (* space) ?:)) `(symbol-name . ,(rx (any letter ?_) (* (any word ?_)))) `(open-paren . ,(rx (or "{" "[" "("))) `(close-paren . ,(rx (or "}" "]" ")"))) @@ -1593,12 +1597,21 @@ Returns the output. See `python-shell-send-string-no-output'." (interactive "r") (python-shell-send-string (buffer-substring start end) nil t)) -(defun python-shell-send-buffer () - "Send the entire buffer to inferior Python process." - (interactive) +(defun python-shell-send-buffer (&optional arg) + "Send the entire buffer to inferior Python process. + +With prefix arg include lines protected by \"if __name__ == '__main__':\"" + (interactive "P") (save-restriction (widen) - (python-shell-send-region (point-min) (point-max)))) + (python-shell-send-region + (point-min) + (or (and + (not arg) + (save-excursion + (re-search-forward (python-rx if-name-main) nil t)) + (match-beginning 0)) + (point-max))))) (defun python-shell-send-defun (arg) "Send the current defun to inferior Python process. -- 2.39.5