2010-05-11 5 views
7

J'ai récemment mis à jour de Carbon Emacs (v22.3) à vanille Emacs 23.2 (de http://www.emacsformacosx.com). Sur Carbon Emacs lors de la compilation d'un projet, Le cadre est divisé en deux avec le fichier source/SConscript actuel dans la fenêtre supérieure, et la sortie de la compilation dans la fenêtre du bas. Je frapperais Cx ` pour accéder au premier avertissement ou une erreur dans la sortie de la compilation et remplaceraient tout ce qui était dans la fenêtre supérieure avec le fichier source de l'erreur ou l'avertissement est.Emacs 23.2 ouvre une nouvelle fenêtre pour chaque erreur de compilation/avertissement navigué à

Dans Emacs 23.2, mais , une troisième fenêtre est ouverte provoquant l'ouverture de deux fenêtres dans la moitié supérieure du cadre (division verticale) et la sortie de la compilation dans la fenêtre de la moitié inférieure du cadre. Comment puis-je dire à Emacs de ne pas ouvrir une nouvelle fenêtre et d'ouvrir le code dans la fenêtre de sortie non-compilateur existante dans le cadre?


Un peu plus de précisions sur le comportement que je viens de remarquer. Si je tape C-x ` alors que le tampon contenant le fichier source ou le fichier SConscript est actif, aucune nouvelle fenêtre n'est ouverte. C'est seulement si je navigue manuellement dans le tampon * compilation * et si j'applique une erreur ou un avertissement, ou si je clique sur un avertissement quand une troisième fenêtre apparaît.

Répondre

4

La fonction utilisée dans la fonctionnalité next-error est pop-to-buffer, qui à son tour utilise split-window-sensibly. Vous pouvez contrôler le comportement de split-window-sensibly en ajustant les variables split-width-threshold et split-height-threshold.

Dans votre cas, c'est split-width-threshold qui est trop petit. Dans mon Emacs 23.1, il est fixé à 160. Il suffit de le mettre à un plus grand nombre et le problème devrait être résolu:

(setq split-width-threshold 200) 
2

Je ne peux pas reproduire ce problème moi-même, mais vous pourriez essayer ce qui suit:

(setq split-width-threshold nil) 

Cela dit display-buffer jamais de diviser les fenêtres horizontalement, même si elles sont assez larges. Il y a aussi une variable split-height-threshold qui est gérée de manière similaire. La vérification des valeurs actuelles de ces variables peut suggérer si elles peuvent être pertinentes pour le comportement que vous voyez. Une dernière chose à vérifier: si vous avez défini votre propre display-buffer-function, cela pourrait être prendre ces décisions pour vous.

Questions connexes