Twój interpreter powłoki python-shell wydaje się nie obsługiwać readline

13

Mam ten problem z moim 25.1 i Python 3.5 na Ubuntu 16.10, ale nigdzie nie widzę, aby został rozwiązany. Zastanawiasz się, jaki był najnowszy status. Reprodukcja:

> emacs -Q --eval '(setq python-shell-interpreter "python3")'

następnie

M-x run-python daje

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list.  Native completions have been disabled locally.

Widziałem jeden pomysł, w którym a M-x find-function python-shell-completion-native-trywyciąga funkcję z głębi, (/usr/local/share/emacs/25.1/lisp/progmodes/python.el.gza ostatnia linia powinna być, nil "_")))a nie powinna nil ""))). Kolejna rozmowa tutaj mówi o zmianieinputrc

Przełączyłem się na innego użytkownika i mogłem używać `run-python 'bez żadnych ostrzeżeń. Okazuje się, że to były moje ustawienia readline. Bash 4.3 dodał nową funkcję readline: „włącz kolorowe statystyki”, którą miałem w .inputrc Usunięcie tej linii naprawiło mój problem, myślę, że powinno to być powtarzalne dla wszystkich.

Czy ktoś wie, co jest na ten temat najnowsze? BTW, uruchomienie Python2 ( (setq org-babel-python-command "python2")) nie ma tego problemu.

147pm
źródło
Błąd Emacsa, z którym masz link, jest oznaczony jako rozwiązany dla 25.2 (jeszcze nie wydany), więc powinieneś spodziewać się, że będzie nadal obecny w 25.1. Możesz wypróbować wersję wstępną (25.1.9x).
npostavs
Wiesz, kiedy pojawi się 25.2?
147pm
Może jakiś miesiąc? Można spróbować badania wstępnego (25.1.91) teraz alpha.gnu.org/gnu/emacs/pretest
npostavs
Mam te same objawy („Twój interpreter powłoki Pythona” nie obsługuje readline ”) z uruchomionym Pythonem 3.6.0 i GNU Emacs 25.2 RC1 w systemie Windows 10, więc albo problem nie został jeszcze rozwiązany, a może to inny problem?
Martin

Odpowiedzi:

10

Jeśli nie chcesz dostać 25,2 rc, możesz zastosować poprawkę, dodając ją do pliku init.el:

(with-eval-after-load 'python
  (defun python-shell-completion-native-try ()
    "Return non-nil if can trigger native completion."
    (let ((python-shell-completion-native-enable t)
          (python-shell-completion-native-output-timeout
           python-shell-completion-native-try-output-timeout))
      (python-shell-completion-native-get-completions
       (get-buffer-process (current-buffer))
       nil "_"))))

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25753#44

npostavs
źródło
Działa jak marzenie. Dzięki za udostępnienie.
dangom
2
Z jakiegoś powodu dodanie tego (setq python-shell-completion-native-enable nil)do mojego init.elpliku działało, bez wymagania powyższego kodu.
Guilherme Salomé
@ GuilhermeSalomé, który pomija ostrzeżenie, ale nie można uzyskać natywnego zakończenia. Jeśli korzystasz z systemu Windows, to jest właściwe .
npostavs
5
Nawet w Emacsie 26.1 nadal mam ten problem.
Guilherme Salomé
1
Również w Emacsie 26.2 i ta odpowiedź nadal działa.
Zoe Rowa
3

Miałem to niepokojące ostrzeżenie również w Emacsie 25.1.

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24401 ma właściwe rozwiązanie umożliwiające colored-statstylko Bash:

$ cat ~/.inputrc
$if Bash
set colored-stats on
$endif
gavenkoa
źródło