Как очистить буфер ipython в Emacs? - PullRequest
4 голосов
/ 08 ноября 2011

Я запускаю интерактивную оболочку ipython в буфере emacs, используя ipython.el. Интересно, есть ли способ очистить экран? Поскольку он не работает на терминале, трюк import os; os.system('CLS') не будет работать. Спасибо.

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Похоже, что ipython основан на comint, что означает, что следующий код должен работать для вас (вызывается с M-x my-clear или привязкой вашего любимого ключа):

(defun my-clear ()
  (interactive)
  (let ((comint-buffer-maximum-size 0))
    (comint-truncate-buffer)))

Я опубликовал некоторые другие варианты в ответ на этот вопрос .

1 голос
/ 25 января 2019

Это очищает экран и переменные текущего сеанса (используя %reset):

(defun my-reset-ipython ()
  "Clear Emacs *Python* buffer and resets iPython variables.

Prints date and time of reset to iPython console and to
*Messages* buffer.

Assumes python has been configured to use iPython:

  (setq python-shell-interpreter \"ipython\")

This function does not reset the iPython console line numbering
or history (either because you can't do that in an iPython
console or the author couldn't find out how!)."
  ;; Allow function to be called via M-x
  (interactive)
  ;; Define variables: date-time string, message string, command to be passed to python
  ;; Requires let* in order for python-command to resolve reset-time and reset-statement
  (let* ((reset-time (format-time-string "%A, %B %e, %Y @ %-I:%M %p"))
         (reset-statement "Reset iPython on ")
         (python-command (concat "print('" reset-statement reset-time "')" )))
    ;; Reset iPython console
    (python-shell-send-string "%reset -f" "*Python*")
    ;; Print message to iPython console indicating reset
    (python-shell-send-string  python-command "*Python*")
    ;; Allow command to be called from another buffer
    (with-current-buffer "*Python*"
      (comint-clear-buffer))
    ;; Print message to minibuffer and *Messages*
    (message (concat reset-statement "%s") reset-time)))

;; Mimic default binding for comint-clear-buffer (C-c M-o)
(define-key inferior-python-mode-map (kbd "C-c M-l") 'my-reset-ipython)
...