Ipython vastlopen tijdens het uitvoeren van de code

Wanneer ik code uit een buffer in python-modus uitvoer om deze te evalueren in een speciaal inferieur ipython-proces, bevriest emacs. Het bevriest als, terwijl de code evalueert, ik probeer de buffer te bewerken van waaruit ik de code heb verzonden. Ik kan het punt niet verplaatsen, kan de buffers niet wijzigen, kan niet typen en de tijd in de modusregel wordt niet bijgewerkt.

Wat kan ik doen om te voorkomen dat dit gebeurt? Kan het verband houden met de instellingen van mijn python-shell-tolk?

Hier is mijn python init

(use-package python
  :mode ("\\.py\\'" . python-mode)
  :interpreter ("ipython" . python-mode)
  :demand
  :config
  (setq python-shell-interpreter "ipython"
    python-shell-interpreter-args "-i"))

Dank je!

1
Ik ben ook een gebruiker van use-package maar ik gebruik het niet voor het laden van python, aangezien de modus is ingebouwd, wordt deze automatisch geïnitialiseerd wanneer ik een .py bestand of buffer. Dus in mijn configuratie om ipython te gebruiken, doe ik het volgende: (setq python-shell-interpreter "ipython") aangenomen dat je pad juist is ingesteld, werkt dit alleen voor mij in emacs 25.1
toegevoegd de auteur alexp206, de bron
Welke emacs-versie gebruikt u? Het werkt correct in emacs 25. Je kunt ook elpy proberen.
toegevoegd de auteur DogDog, de bron
Hallo, sorry voor de vertraagde reactie. Mijn versie is GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu, GTK + versie 2.24.28) van 2016-01-04 . Ik heb het gevoel dat het zou moeten werken zoals het is. Ik heb mensen gezien die het toevoegen van --pylab als argument toevoegden
toegevoegd de auteur Airsick, de bron
Dat werkte niet voor mij. Als ik bijvoorbeeld een bestand heb dat "while True: 2 + 2" is en ik probeer dat bestand te bewerken terwijl het draait, dan moet ik een toetsenbordinterupt doen om emacs te bevriezen.
toegevoegd de auteur Airsick, de bron

1 antwoord

Oké, dus ik kwam erachter wat het probleem was! Ik vroeg dit meer dan een maand geleden en heb het onlangs opgelost. Als iemand anders dit probleem tegenkomt, wil ik dat ze weten dat er een oplossing is.

Het probleem komt van eldoc-modus en/of global-eldoc-mode . Global-eldoc-modus is standaard ingeschakeld in emacs 25 en dat is waarom het geen probleem was in emacs 24, ondanks het feit dat dit een langdurige bug is geweest. Het probleem was dat emacs automatisch de documentatie van het proces zou opvragen vanwege de eldoc-modus, maar dan zou ophangen als de interpetter bezet was. Dit probleem is nu opgelost in de emacs-25 branch op git en het zal worden opgenomen in de volgende pretest en in de release van emacs.

Wat nu emacs doet het eenvoudigweg time-out en stopt de eldoc-modus van het opvragen van de documentatie als het ooit voorkomt. Deze functie kan worden geconfigureerd met python-eldoc-functie-timeout python-eldoc-get-doc en python-eldoc-function-timeout-permanent .

Proost

0
toegevoegd