gpt4 book ai didi

python - Emacs Python "elpy"向解释器发送代码

转载 作者:行者123 更新时间:2023-12-05 07:54:02 25 4
gpt4 key购买 nike

我在 Emacs 上安装了“elpy/jedi”。并使用 DJJ 提供的定制我现在可以使用 C-c C-RET将单独的行发送到 python 解释器。下面是自定义

(defun my-python-line ()
(interactive)
(save-excursion
(setq the_script_buffer (format (buffer-name)))
(end-of-line)
(kill-region (point) (progn (back-to-indentation) (point)))
;(setq the_py_buffer (format "*Python[%s]*" (buffer-file-name)))
(setq the_py_buffer "*Python*")
(switch-to-buffer-other-window the_py_buffer)
(goto-char (buffer-end 1))
(yank)
(comint-send-input)
(switch-to-buffer-other-window the_script_buffer)
(yank)
)
(next-line)
)

(eval-after-load "elpy"
'(define-key elpy-mode-map (kbd "C-c <C-return>") 'my-python-line))

上面的代码片段与 DDJ 建议的大部分相同,只是做了一些小的修改,比如将光标移动到下一行和快捷方式。

我想修改行为,以便将光标所在位置到遇到新行的所有行发送到 python 解释器。并且光标位置应该移动到空换行符。这将模仿 Spyder 的行为。

更新 1 因此,在使用以下代码更新我的 .emacs 之后。当我执行像 M-x beginning-of-line 这样的单独语句时,我可以获得期望的结果。 , M-x push-mark ...

但是当我使用键盘快捷键时 C-c <C-return>它以某种方式评估整个缓冲区。

(defun forward-block (&optional φn)
(interactive "p")
(let ((φn (if (null φn) 1 φn)))
(search-forward-regexp "\n[\t\n ]*\n+" nil "NOERROR" φn)))

(defun elpy-shell-send-current-block ()
"Send current block to Python shell."
(interactive)
(beginning-of-line)
(push-mark)
(forward-block)
(elpy-shell-send-region-or-buffer)
(display-buffer (process-buffer (elpy-shell-get-or-create-process))
nil
'visible))


(eval-after-load "elpy"
'(define-key elpy-mode-map (kbd "C-c <C-return>") 'elpy-shell-send-current-block))

我正在尝试使用此快捷方式的 Python 代码位于下方,光标位于第二个打印语句处。

import os

print("Line 1: Should Execute")
print("Line 2: Should Execute")

print("Line 3: Should Not Execute")

最佳答案

您可以编写一个函数来选择您想要的任何区域并调用 elpy-shell-send-region-or-buffer 来发送它。

这是执行此操作的一段代码。

(defun forward-block (&optional n)
(interactive "p")
(let ((n (if (null n) 1 n)))
(search-forward-regexp "\n[\t\n ]*\n+" nil "NOERROR" n)))

(defun elpy-shell-send-current-block ()
"Send current block to Python shell."
(interactive)
(beginning-of-line)
(push-mark)
(forward-block)
(elpy-shell-send-region-or-buffer)
(display-buffer (process-buffer (elpy-shell-get-or-create-process))
nil
'visible))

关于python - Emacs Python "elpy"向解释器发送代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com