From 63b195b133f23d61348a40b021d217f67aedfbb5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 2 Oct 2018 23:52:29 -0400 Subject: [PATCH] lang/python: fix stringp errors when opening REPL Caused my misuse of if-let* to let-bind dynamic variables. The expanded code doesn't quite work out the way I expected, causing python-shell-interpreter to be nil regardless of which side of the if-else statement ran. --- modules/lang/python/autoload/python.el | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/lang/python/autoload/python.el b/modules/lang/python/autoload/python.el index b34e7ba49..ab9733d40 100644 --- a/modules/lang/python/autoload/python.el +++ b/modules/lang/python/autoload/python.el @@ -7,16 +7,20 @@ (defun +python/repl () "Open the Python REPL." (interactive) + (unless python-shell-interpreter + (user-error "`python-shell-interpreter' isn't set")) (pop-to-buffer (process-buffer - (let ((interp python-shell-interpreter) - (interp-args python-shell-interpreter-args)) - (if-let* ((bin (executable-find "pipenv")) - (default-directory (pipenv-project-p)) - (python-shell-interpreter "pipenv") - (python-shell-interpreter-args (format "run %s %s" interp interp-args))) - (run-python nil t t) - (run-python nil t t)))))) + (if-let* ((pipenv (executable-find "pipenv")) + (pipenv-project (pipenv-project-p))) + (let ((default-directory pipenv-project) + (python-shell-interpreter-args + (format "run %s %s" + python-shell-interpreter + python-shell-interpreter-args)) + (python-shell-interpreter pipenv)) + (run-python nil t t)) + (run-python nil t t))))) (defun +python--extract-version (prefix str) (when str