Dans la fonction "shell", cette ligne affiche le tampon du shell et presque toujours son nouveau shell ouvert dans un cadre aléatoire. Et je dois échanger les tampons, c'est ennuyeux.
...
(pop-to-buffer buffer)
...
Dans les documents dit:
Si cette fenêtre se trouve sur un cadre graphique différent, ce cadre reçoit le focus d'entrée si possible.
Je ne comprends pas comment afficher le tampon dans le cadre cible, je ne suis pas assez bon dans elisp. Comment je peux faire ça? Merci si quelqu'un pouvait aider.
Réponses:
Je suppose que l'affiche originale signifie cibler la fenêtre actuellement sélectionnée dans le même cadre. Dans le cas où l'affiche originale souhaite cibler une fenêtre spécifique dans un cadre différent, consultez ce fil associé pour un exemple complexe: /programming/18346785/how-to-intercept-a-file- avant d'ouvrir et de décider quelle image
J'ai copié la fonction intégrée
shell
et en ai créé une nouvelle appeléeshell-get-buffer-create
, qui utilise à lawith-current-buffer ...
place depop-to-buffer
. Cette nouvelle fonction génère ou localise le*shell*
tampon sans le sélectionner dans aucune fenêtre.Pour afficher le
*shell*
tampon dans la fenêtre actuellement sélectionnée, utilisez:ou
ou
J'ai créé une fonction personnalisée appelée
my-display-buffer
qui peut s'afficher dans quatre directions - gauche, droite, au-dessus ou en dessous. Il y a trois possibilités: (1) Si une fenêtre sur le cadre affiche déjà le tampon cible, alors réutilisez simplement la même fenêtre. (2) S'il existe déjà une fenêtre dans la direction spécifiée par rapport à la fenêtre sélectionnée, affichez le tampon cible dans cette fenêtre. (3) S'il n'y a pas de fenêtre dans la direction spécifiée, créez-en une dans cette direction et affichez le tampon cible dans ladite fenêtre.Exemple d'utilisation :
ou
ou
ou
Le code :
Et, voici un
eshell-get-buffer-create
qui fonctionne de la même manière que ci-dessus ...la source
Pas une réponse directe à votre question, mais c'est peut-être une solution pour vous.
Pour installer le package shell-pop depuis melpa ou melpa-stable. Ensuite, évaluez (pour essayer dans
*scratch*
viaC-x C-e
, plus tard dans votre.emacs
)Cela fait apparaître un shell dans la partie inférieure de votre cadre, dans ce cas lorsque vous appuyez sur ctrl-meta-ret. La répétition de la séquence du clavier revient là où vous étiez.
Voir https://github.com/kyagi/shell-pop-el pour plus de détails.
la source