Acabei de atualizar para a versão mais recente do IPython e agora algo está errado ao usá-lo no emacs.
Ao usá-lo em um terminal regular, ele funciona bem (cores, preenchimento de guias, etc.); no entanto, em M-x eshell
ou M-x shell
, em vez de emitir In [1]:
, na verdade ele gera [?12l[?25h
e Out[1]
envia para [J[?7h[?12l[?25h[?2004l[?7hOut[1]:
.
Talvez seja algum recurso do terminal que não está disponível no emacs usado pelo IPython, mas eu gostaria de saber qual é.
Terminal.app:
In [1]: 2+2
Out[1]: 4
Emacs
[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4
Respostas:
O IPython 5 possui uma nova interface de terminal, que não é compatível com as conchas inferiores do Emacs. Para corrigi-lo, adicione o
--simple-prompt
sinalizador ao comando IPython:A partir da documentação:
Referência: http://ipython.readthedocs.io/en/stable/whatsnew/version5.html#id1
fonte
python-shell-interpreter-args
. Se você ainda não experimentou o Elpy, deve verificar. Ele permite que você escreva suas definições de função em um buffer separado e passe-as facilmente para o intérprete com apenas um comando. Nesse caso, você pode usar todos os comandos de edição do Emacs e obter uma sessão interativa - o melhor dos dois mundos.readline
paraprompt_toolkit
no IPython 5.prompt_toolkit
não é compatível com os shells do Emacs, que funcionam de maneira diferente determ
: até onde eu sei, os shells executam terminais burros com o objetivo de trabalhar mais como um buffer Emacs padrão, enquantoterm
executa um emulador de terminal completo real. Parece que as conchas são compatíveis com,readline
mas não comprompt_toolkit
, o que explicaria o prompt mostrando as seqüências de escape. Comoterm
executa um terminal completo, ele interpreta corretamente as seqüências de escape.Existe uma maneira de abrir o IPython no emacs shell sem usar --simple-prompt
Depois disso, você poderá abrir o ipython diretamente no emacs shell sem enfrentar o problema de exibição.
No entanto, há mais um problema no meu caso: por alguma razão, mesmo após a exibição ficar correta, eu ainda não conseguia copiar e colar diretamente algumas definições de classe de várias linhas no ipython no emacs shell. Minha solução atual é usar o comando Ipython% paste. Se você tiver melhores abordagens, entre em contato.
PS: Estou usando o Ubuntu 16.04. Alguém usa o MacOS diz que quebra o IPython.
fonte