Question

J'utilise pdb pour déboguer des programmes Python et je ne suis pas satisfait de son comportement.

L’écran est divisé en plusieurs fenêtres emacs et, lorsque j’exécute pdb, il remplace (de manière aléatoire?) l’une des fenêtres par la sortie du débogueur * gud *.

De même, lorsqu'un point d'arrêt est rencontré, même si le tampon de débogage est déjà visible dans une fenêtre, il place généralement ce tampon dans une autre fenêtre, et remplace une autre de mes fenêtres par le contenu du fichier source. (accessoirement j'aime bien que ça saute à la bonne ligne dans le fichier source)

Comment puis-je désactiver gud / pdb de gérer mes fenêtres pour moi? Est-il possible dans emacs d’empêcher toute manipulation programmatique de windows & amp; disposition de l'écran?

Edit: J'ai trouvé la réponse à ce problème dans un autre message: bascule les fenêtres dédiées

Était-ce utile?

La solution

Regardez dans les fenêtres adhésives .

Autres conseils

J'ai essayé toutes ces approches sans succès sur Emacs 24. Si vous êtes toujours intéressé, je suis revenu à l'ancien comportement de gdb en utilisant 'gud-gdb' qui implémentait l'ancien comportement de l'interaction gdb / emacs (pas de fenêtres dédiées ni de mémoire tampon d'E / S). Si vous ne souhaitez pas appeler M-x gud-gdb lorsque vous l’utilisez, vous pouvez définir un alias pour M-x gdb

J'ai une solution qui empêche la gdb de voler des fenêtres. Il fonctionne avec Emacs 24.4 (instantané 2014-07-18) et ne nécessite pas de mémoire tampon dédicacée. L'avantage par rapport aux autres réponses est que vous n'aurez pas à vous soucier de dédier et de ne pas dédicacer les tampons chaque fois que vous changez de tampon, ce qui devient rapidement fastidieux.

Placez ce conseil dans vos .emacs:

(defadvice gdb-inferior-filter
    (around gdb-inferior-filter-without-stealing)
  (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
    (comint-output-filter proc string)))
(ad-activate 'gdb-inferior-filter)

Ceci remplace effectivement cette fonction telle que définie dans gdb-mi.el et supprime la branche qui appelle gdb-display-buffer, qui est la cause du vol de fenêtres.

Vous devez utiliser Sticky Windows pour que vos fenêtres et vos tampons restent où ils sont, mais Sticky Windows. n'arrêtera pas gud / pdb d'essayer de voler vos fenêtres. Lorsque gud / pdb ne peut pas voler votre fenêtre de code source, il ouvre un nouveau cadre Emacs, même s’il existe une autre fenêtre dans le cadre actuel.

Cela vient du fait que la fonction qui tente de passer au tampon gud-pdb ( py-pdbtrack-track-stack-file ) appelle la fonction pop-to -buffer avec l'argument OTHER-WINDOW défini sur t .

Pour contourner ce problème pour toutes les bibliothèques appelant pop-to-buffer, vous pouvez annuler le rôle OTHER-WINDOW en définissant un conseil sur pop-to-buffer (dans vos .emacs). :

(defadvice pop-to-buffer (before cancel-other-window first)
  (ad-set-arg 1 nil))

(ad-activate 'pop-to-buffer)

Vous devez également personnaliser la variable pop-up-windows sur nil afin de forcer display-buffer (la routine de bas niveau utilisée pour afficher un tampon particulier sur des fenêtres et cadres) pour ne pas créer de nouvelle fenêtre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top