2014-01-17 4 views
1

Я новичок в использовании emacs как IDE для python. У меня есть pymode и Ropemacs. Я понимаю, что я должен выделить регион, а затем использовать C-c C-c для отправки его на интерактивный терминал. Есть ли дополнительные пакеты, которые мне нужны для этого?Emacs C-c C-c для кода python

Ошибка я получаю для C-C C-С:

Wrong type argument: integer-or-marker-p, nil 

Я видел также this link было заявление о том, что, но это не выглядело как моя ошибка.

Update ответив Zack

Чтобы установить эту переменную, я пошел в EMACS нуля и сделал это:

(setq debug-on-error t) 

Тогда M-x eval-region

(Это правильный путь, чтобы установить, что true?)

Тогда это то, что появилось в моем отладчике:

Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil) 
    count-lines(1 nil) 
    (save-restriction (widen) (count-lines (point-min) (or (and (eq start (line-beginning-position)) (not (eobp)) (1+ start)) start))) 
    (let* ((windows-config (window-configuration-to-register 313465889)) (origline (save-restriction (widen) (count-lines (point-min) (or (and (eq start ...) (not ...) (1+ start)) start)))) (py-shell-name (or shell (py-choose-shell))) (py-exception-buffer (current-buffer)) (execute-directory (cond ((condition-case nil (progn (file-name-directory ...)) (error nil))) ((and py-use-current-dir-when-execute-p (buffer-file-name)) (file-name-directory (buffer-file-name))) ((and py-use-current-dir-when-execute-p py-fileless-buffer-use-default-directory-p) (expand-file-name default-directory)) ((stringp py-execute-directory) py-execute-directory) ((getenv "VIRTUAL_ENV")) (t (getenv "HOME")))) (py-buffer-name (or py-buffer-name (py-buffer-name-prepare))) (filename (and filename (expand-file-name filename))) (py-orig-buffer-or-file (or filename (current-buffer))) (proc (or proc (if py-dedicated-process-p (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name py-buffer-name t)) (or (and (boundp ...) (get-buffer-process py-buffer-name)) (get-buffer-process (py-shell nil py-dedicated-process-p py-shell-name ... t)))))) err-p) (set-buffer py-exception-buffer) (py-update-execute-directory proc py-buffer-name execute-directory) (cond (python-mode-v5-behavior-p (py-execute-python-mode-v5 start end)) (py-execute-no-temp-p (py-execute-ge24\.3 start end filename execute-directory)) ((or file (and (not (buffer-modified-p)) filename)) (py-execute-file-base proc filename nil py-buffer-name filename execute-directory)) (t (py-execute-buffer-finally start end execute-directory)))) 
    py-execute-base(nil nil nil "/home/mittenchops/gh/myscript.py" nil "/home/mittenchops/gh/myscript.py") 
    (setq erg (py-execute-base nil nil nil file nil (or (and (boundp (quote py-orig-buffer-or-file)) py-orig-buffer-or-file) file))) 
    (if (file-readable-p file) (setq erg (py-execute-base nil nil nil file nil (or (and (boundp (quote py-orig-buffer-or-file)) py-orig-buffer-or-file) file))) (message "%s not readable. %s" file "Do you have write permissions?")) 
    (let (erg) (if (file-readable-p file) (setq erg (py-execute-base nil nil nil file nil (or (and (boundp (quote py-orig-buffer-or-file)) py-orig-buffer-or-file) file))) (message "%s not readable. %s" file "Do you have write permissions?")) erg) 
    py-execute-file("/home/mittenchops/gh/myscript.py") 
    (let* ((py-master-file (or py-master-file (py-fetch-py-master-file))) (file (if py-master-file (expand-file-name py-master-file) (buffer-file-name)))) (py-execute-file file)) 
    py-execute-buffer-base() 
    (progn (write-file (buffer-file-name)) (py-execute-buffer-base)) 
    (if (y-or-n-p "Buffer changed, save first? ") (progn (write-file (buffer-file-name)) (py-execute-buffer-base)) (py-execute-region (point-min) (point-max))) 
    (if (and py-prompt-on-changed-p (buffer-file-name) (interactive-p) (buffer-modified-p)) (if (y-or-n-p "Buffer changed, save first? ") (progn (write-file (buffer-file-name)) (py-execute-buffer-base)) (py-execute-region (point-min) (point-max))) (if (buffer-file-name) (py-execute-buffer-base) (py-execute-region (point-min) (point-max)))) 
    py-execute-buffer() 
    call-interactively(py-execute-buffer nil nil) 
+1

Установите 'debug-on-error' в' t', повторите тест и опубликуйте трассировку, которую вы получите в окне '** Debug **'. (Затем используйте 'Mx top-level', чтобы выйти из отладчика. Отладчик Emacs ужасен, и вы не хотите пытаться использовать его больше, чем вам абсолютно необходимо. Но нам нужна эта трассировка.) – zwol

+0

Пробовал 'Cc Cr'? –

+2

Для справок в будущем, переменные Lisp могут быть установлены с помощью 'M-x set-variable', что, вероятно, будет более удобным, чем потянуть буфер нуля. Завершение табуляции и все такое. – zwol

ответ

4

Показанная ошибка является результатом ошибки в python-mode.el, которая исправлена ​​в багажнике. AFAIK ошибка возникает только при выполнении не сохраненного буфера, поэтому сохранение буфера сначала составляет C-c C-c Работа.

BTW py-execute-region RET is C-c |, а C-c C-c всегда будет отправлять весь буфер независимо от существующего региона. Если C-c C-c должен соблюдать регион, который может стоить запроса функции. Если вы заинтересованы, пожалуйста, файл его здесь:

https://bugs.launchpad.net/python-mode

Still личной точка зрения: маркировка региона как таковой является дорогостоящим - например. трудоемкая вещь, поскольку это требует некоторого внимания, определяющего право границ, которое лучше всего расходуется на проблему, поставленную на карту. Python-mode возьмет на себя большую часть этой работы от вас, предложив пару команд what-to-execute. Возможно, загляните в меню «Python», см. Раздел «Выполнить ...» и кнопку «Подробнее ...». Аналогичным образом необходимо сделать несколько других изменений.

+0

Я обновил до 6.1.3 и по-прежнему кажется, что эта ошибка. Я работаю с сохраненным буфером. – Mittenchops

+0

@ Mittenchops Не удается воспроизвести до сих пор. Откройте билет на странице https://bugs.launchpad.net/python-mode. Нужен какой-то примерный код, вывод MET-отчета об отчете-emacs-Rug и последнее отслеживание, если оно доступно. –

Смежные вопросы