2011-07-27 4 views
1

python-mode.el을 사용하여 파이썬 인터프리터로 ipython을 사용하는 데 약간의 문제가 있습니다. 모든 것이 기능적으로 작동하지만 RET을 누르면 두 줄 앞에 (표현식을 입력했는지 여부와 관계없이) 함수 정의에 대한 자동 들여 쓰기가 이상합니다. 다음과 같이 표시됩니다.Emacs에서 ipython으로 이상한 동작이 발생했습니다.

In [164]: a = 1 

In [165]: 
In [166]: a + 3 

Out[166]: 4 

In [167]: 
In [168]: def nine(): 

    .....: .....:  return 4+5 

    .....: 
In [169]: 

In [170]: 

'반환'행에 하나만 있어야합니다. ipython.el 또는 python-mode.el에서 들여 쓰기/개행 기능이 두 번 호출 된 것으로 의심됩니다. (나는 elisp를 정말로 모른다. 그러나 이것이 나를 그것에 넣는 이슈일지도 모른다).

내가 'M-x ansi-term RET ipython'을 실행하면 예상대로 작동하지만 다른 파일에서 코드를 보내고 디버깅 등이 작동하지 않기 때문에 이상적이지 않습니다.

두 가지 방법으로이 문제를 해결할 수 있습니다 : 내 설정이 이중 들여 쓰기/줄 바꿈을 어떻게 일으키는 지 파악하고이를 수정하거나 기본 파이썬 인터프리터를 ipython.el에서 ipython으로 ansi-term으로 변경하여 보존합니다 코드를 보내고 디버그하는 기능.

어디에서 시작해야할지 조언 해 주시면 감사하겠습니다.

답변

1

파이썬 버퍼 (M-x describe-bindings)에서 RET 바인딩을 확인한 다음 거기에서 이동할 수 있습니다. 나를 위해 그것은 개행에 바인딩됩니다. 바인드 된 함수를 클릭하거나 M-x describe-function을 사용하여 바인드 된 함수의 정의를 찾으십시오.

0

OK 우분투 작업 컴퓨터의 .emacs를 MacBook으로 이식하는 과정에서이 사실을 알았습니다.

첫째, 내 이맥스에서 다음 줄에서 주석 : 이중 개행 것은 없애있어

(defadvice comint-send-input (around block-comint-formatting activate) 
(if (string= (buffer-name) "*Python*") 
    (letf (((symbol-function 'add-text-properties) (lambda (x y z) nil))) 
     ad-do-it)) 
ad-do-it) 

. 또한 다음 그래서 파이썬 모드로 다음 같은 방법을 사용할 수 있습니다 내 ipython.el 끝으로

(define-key py-shell-map "\C-j" 'ipython-send-and-indent) 

을 추가했다.

0

M-X ipython RET

당신이 현재 파이썬 - mode.el에 필요한 모든 것입니다

그것은 당신이 버그 리포트를 보내 도움이 될 수 있습니다,하지만 ipython와 완벽 하진

http://launchpad.net/python-mode

관련 문제