Org-mode upstream changes allow to switch between IPython and Python
This commit is contained in:
parent
cd4a380580
commit
82378ef819
96
README.org
96
README.org
@ -718,7 +718,9 @@ defined in this Org file.
|
|||||||
(smart-latex-engrave-org-source-blocks :no-manual t)
|
(smart-latex-engrave-org-source-blocks :no-manual t)
|
||||||
(toggle-engrave-faces-latex-face-apply-override :no-manual t)
|
(toggle-engrave-faces-latex-face-apply-override :no-manual t)
|
||||||
(toggle-engrave-faces-latex-face-mapper-override :no-manual t)
|
(toggle-engrave-faces-latex-face-mapper-override :no-manual t)
|
||||||
(toggle-org-babel-python-format-session-value-override :no-manual t))))
|
(toggle-org-babel-python-format-session-value-override :no-manual t)
|
||||||
|
"Python"
|
||||||
|
(choose-common-python-interpreter :no-manual t))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** [[info:info#Top][Info (info)]]
|
** [[info:info#Top][Info (info)]]
|
||||||
@ -1714,9 +1716,11 @@ buffers with help of an external [[https://nodejs.org][node.js]] program.
|
|||||||
:END:
|
:END:
|
||||||
|
|
||||||
Listing [[lst:customize-org-babel]], [[lst:customize-org]], [[lst:customize-org-link]] does
|
Listing [[lst:customize-org-babel]], [[lst:customize-org]], [[lst:customize-org-link]] does
|
||||||
basic customization of [[https://orgmode.org/][Org-mode]] variables. Listing
|
basic customization of [[https://orgmode.org/][Org-mode]] variables. In addition, listing
|
||||||
[[lst:customize-org-for-lualatex-export]], and
|
[[lst:customize-org-babel]] selects the Python interpreter by means of
|
||||||
[[lst:customize-ox-latex-for-lualatex-export]] configure [[https://orgmode.org/][Org-mode]] for export to
|
src_emacs-lisp{(choose-common-python-interpreter)} defined in listing
|
||||||
|
[[lst:choose-common-python-interpreter]]. Listing [[lst:customize-org-for-lualatex-export]],
|
||||||
|
and [[lst:customize-ox-latex-for-lualatex-export]] configure [[https://orgmode.org/][Org-mode]] for export to
|
||||||
LuaLaTeX. Listing [[lst:customize-ob-python]] allows to pretty-print Python session
|
LuaLaTeX. Listing [[lst:customize-ob-python]] allows to pretty-print Python session
|
||||||
source block values with [[https://github.com/psf/black#readme][black]] instead of [[https://docs.python.org/3/library/pprint.html][pprint]]. Listing
|
source block values with [[https://github.com/psf/black#readme][black]] instead of [[https://docs.python.org/3/library/pprint.html][pprint]]. Listing
|
||||||
[[lst:customize-org-link]] configures =org-link= to use relative file path links.
|
[[lst:customize-org-link]] configures =org-link= to use relative file path links.
|
||||||
@ -1764,14 +1768,7 @@ backward compatibility. See table [[tab:org-latex-class-tag-placeholder]] and ty
|
|||||||
'(org-babel-lisp-eval-fn #'sly-eval))))
|
'(org-babel-lisp-eval-fn #'sly-eval))))
|
||||||
|
|
||||||
(with-eval-after-load 'ob-python
|
(with-eval-after-load 'ob-python
|
||||||
(custom-set-variables
|
(choose-common-python-interpreter 'python))
|
||||||
;; Python hangs, but IPython does not.
|
|
||||||
;; `(org-babel-python-command
|
|
||||||
;; ,(concat (or (executable-find "python3") (executable-find "python"))
|
|
||||||
;; " -E"))
|
|
||||||
`(org-babel-python-command
|
|
||||||
,(concat (or (executable-find "ipython3") (executable-find "ipython"))
|
|
||||||
" --simple-prompt --HistoryAccessor.enabled=False"))))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+caption[Customize =ob-python=]:
|
#+caption[Customize =ob-python=]:
|
||||||
@ -3565,16 +3562,18 @@ server, before plunging into the configuration steps:
|
|||||||
:END:
|
:END:
|
||||||
|
|
||||||
Listing [[lst:configure-python]] configures [[https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/progmodes/python.el][python-mode]] to use [[https://flake8.pycqa.org/en/latest/][flake8]] as style
|
Listing [[lst:configure-python]] configures [[https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/progmodes/python.el][python-mode]] to use [[https://flake8.pycqa.org/en/latest/][flake8]] as style
|
||||||
checker and [[https://ipython.org/][IPython]] as shell interpreter. The [[https://github.com/pythonic-emacs/pythonic#readme][pythonic]] and [[https://github.com/jorgenschaefer/pyvenv#readme][pyvenv]] packages
|
checker and [[https://ipython.org/][IPython]] as shell interpreter and selects the Python interpreter by
|
||||||
provide support to handle Python virtual environments within Emacs. The [[https://github.com/pyenv/pyenv][pyenv]]
|
means of src_emacs-lisp{(choose-common-python-interpreter)} defined in listing
|
||||||
package provides support to work with [[https://github.com/pyenv/pyenv#readme][pyenv]] (eventually with [[https://github.com/pyenv/pyenv-virtualenv#readme][pyenv-virtualenv]])
|
[[lst:choose-common-python-interpreter]]. The [[https://github.com/pythonic-emacs/pythonic#readme][pythonic]] and [[https://github.com/jorgenschaefer/pyvenv#readme][pyvenv]] packages provide support
|
||||||
to select between different python versions (eventually each with different
|
to handle Python virtual environments within Emacs. The [[https://github.com/pyenv/pyenv][pyenv]] package provides
|
||||||
environments). In the end, all those packages do is to set
|
support to work with [[https://github.com/pyenv/pyenv#readme][pyenv]] (eventually with [[https://github.com/pyenv/pyenv-virtualenv#readme][pyenv-virtualenv]]) to select between
|
||||||
=python-shell-virtualenv-root= (in case of [[https://github.com/pyenv/pyenv#readme][pyenv]] and [[https://github.com/pythonic-emacs/pythonic#readme][pythonic]]) and tweak the
|
different python versions (eventually each with different environments). In the
|
||||||
environment variables and restart the relevant Python child processes (in case
|
end, all those packages do is to set =python-shell-virtualenv-root= (in case of
|
||||||
of [[https://github.com/jorgenschaefer/pyvenv#readme][pyvenv]]). Therefore, this setup replaces those packages with listing
|
[[https://github.com/pyenv/pyenv#readme][pyenv]] and [[https://github.com/pythonic-emacs/pythonic#readme][pythonic]]) and tweak the environment variables and restart the relevant
|
||||||
[[lst:manage-pyenv]] to manage [[https://github.com/pyenv/pyenv#readme][pyenv]] from within Emacs and listing
|
Python child processes (in case of [[https://github.com/jorgenschaefer/pyvenv#readme][pyvenv]]). Therefore, this setup replaces
|
||||||
[[lst:setting-python-shell-virtualenv-root]] to set =python-shell-virtualenv-root=.
|
those packages with listing [[lst:manage-pyenv]] to manage [[https://github.com/pyenv/pyenv#readme][pyenv]] from within Emacs
|
||||||
|
and listing [[lst:setting-python-shell-virtualenv-root]] to set
|
||||||
|
=python-shell-virtualenv-root=.
|
||||||
|
|
||||||
#+caption[Configure =python=]:
|
#+caption[Configure =python=]:
|
||||||
#+caption: Configure =python=.
|
#+caption: Configure =python=.
|
||||||
@ -3585,15 +3584,50 @@ of [[https://github.com/jorgenschaefer/pyvenv#readme][pyvenv]]). Therefore, thi
|
|||||||
`(python-check-command ,(executable-find "flake8"))
|
`(python-check-command ,(executable-find "flake8"))
|
||||||
`(python-flymake-command '(,(executable-find "flake8") "-"))
|
`(python-flymake-command '(,(executable-find "flake8") "-"))
|
||||||
'(python-indent-guess-indent-offset nil)
|
'(python-indent-guess-indent-offset nil)
|
||||||
'(python-shell-completion-native-disabled-interpreters '("ipython3" "pypy"))
|
'(python-shell-completion-native-disabled-interpreters '("ipython3" "pypy")))
|
||||||
;; Python hangs, but IPython does not.
|
(choose-common-python-interpreter 'python))
|
||||||
;; `(python-shell-interpreter
|
#+end_src
|
||||||
;; ,(or (executable-find "python3") (executable-find "python")))
|
|
||||||
;; '(python-shell-interpreter-args "-E -i")
|
#+caption[Choose common =python= interpreter for =ob-python= and =python-mode=]:
|
||||||
`(python-shell-interpreter
|
#+caption: Choose =python= interpreter for =ob-python= and =python-mode=.
|
||||||
,(or (executable-find "ipython3") (executable-find "ipython")))
|
#+name: lst:choose-common-python-interpreter
|
||||||
'(python-shell-interpreter-args
|
#+begin_src emacs-lisp
|
||||||
"--simple-prompt --HistoryAccessor.enabled=False")))
|
(defun choose-common-python-interpreter (&optional program)
|
||||||
|
"Choose Python interpreter PROGRAM for `ob-python' and `python-mode'."
|
||||||
|
(interactive)
|
||||||
|
(let* ((prompt (format "Choose Python (%s): "
|
||||||
|
(bound-and-true-p python-shell-interpreter)))
|
||||||
|
(choices '(ipython python))
|
||||||
|
(choice (if (member program choices)
|
||||||
|
(symbol-name program)
|
||||||
|
(completing-read prompt choices nil t))))
|
||||||
|
(when (boundp 'org-babel-python-command)
|
||||||
|
(pcase choice
|
||||||
|
("python"
|
||||||
|
(custom-set-variables
|
||||||
|
`(org-babel-python-command
|
||||||
|
,(concat (or (executable-find "python3")
|
||||||
|
(executable-find "python"))
|
||||||
|
" -E"))))
|
||||||
|
("ipython"
|
||||||
|
(custom-set-variables
|
||||||
|
`(org-babel-python-command
|
||||||
|
,(concat (or (executable-find "ipython3")
|
||||||
|
(executable-find "ipython"))
|
||||||
|
" --simple-prompt --HistoryAccessor.enabled=False"))))))
|
||||||
|
(when (boundp 'python-shell-interpreter)
|
||||||
|
(pcase choice
|
||||||
|
("python"
|
||||||
|
(custom-set-variables
|
||||||
|
`(python-shell-interpreter
|
||||||
|
,(or (executable-find "python3") (executable-find "python")))
|
||||||
|
'(python-shell-interpreter-args "-E -i")))
|
||||||
|
("ipython"
|
||||||
|
(custom-set-variables
|
||||||
|
`(python-shell-interpreter
|
||||||
|
,(or (executable-find "ipython3") (executable-find "ipython")))
|
||||||
|
'(python-shell-interpreter-args
|
||||||
|
"--simple-prompt --HistoryAccessor.enabled=False")))))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+caption[Manage =pyenv=]:
|
#+caption[Manage =pyenv=]:
|
||||||
|
Loading…
Reference in New Issue
Block a user