Une fenêtre par projet


9

Je travaille actuellement sur plusieurs projets. Je veux qu'une seule instance d'Emacs les gère tous. Ce que je veux, c'est un comportement de type tmux dans lequel chaque «fenêtre» (au sens d'Emacs) correspond à un projet qui contient des tampons des fichiers liés à ce projet. Il y a plusieurs fenêtres, chacune correspondant à un projet et je devrais pouvoir basculer entre elles (quelque chose de similaire à C-b w)

Cette fonctionnalité est-elle déjà présente sous une forme ou une autre? Je suppose que ce sera cool d'avoir comme les autres options sont soit:

  • Ouvrez plusieurs instances d'Emacs.
  • Avoir tous les fichiers de tous les projets dans une seule instance, ce qui rend la commutation des tampons difficile.

2
Pour la gestion de projet, avez-vous essayé la perspective ?
cutejumper

Essayez ce billet de blog sur Emacs en tant que multiplexeur de terminal avancé : vous obtiendrez un comportement de type Tmux. Je suis juste tombé dessus, je l'ai mis au travail et il fait ce qu'il annonce. En plus, vous obtiendrez ace-jump-modeen soi une solution intéressante pour sauter rapidement avec votre curseur dans un tampon (si vous ne l'avez pas déjà).

Si vous êtes prêt à investir un certain temps de configuration initiale pour définir les conditions des projets, vous pouvez les allouer à un cadre chacun et les utiliser frame-bufs. Voir aussi Comment intercepter un fichier avant son ouverture et décider quelle trame - stackoverflow.com/questions/18346785/… - pour afficher un tampon dans une trame cible, et vous pouvez utiliser frame-buffs--add-bufferconjointement pour obtenir la trame associée. Vous pouvez vous marier frame-bufsavec tabbaret associer / supprimer des tampons dynamiquement: emacs.stackexchange.com/a/10112/2287
lawlist

Voici le lien pour frame-bufsassocier des tampons à un cadre particulier: github.com/alpaker/Frame-Bufs/blob/master/frame-bufs.el
lawlist

@cutejumper Perspective est parfait. Vous pouvez l'écrire comme réponse pour que je puisse la cocher correctement.
sudeepdino008

Réponses:


7

Vous pouvez utiliser la perspective pour gérer des projets. De son README:

perspective.el fournit plusieurs espaces de travail (ou "perspectives") pour chaque cadre Emacs. Cela facilite le travail sur de nombreux projets distincts sans se perdre dans tous les tampons.

Chaque perspective est composée d'une configuration de fenêtre et d'un ensemble de tampons. Le passage à une perspective active sa configuration de fenêtre et, dans une perspective, seuls ses tampons sont disponibles par défaut.

Il existe également une autre version en mode persp , qui est un peu différente de l'original. Les perspectives sont partagées entre les images et les états peuvent être enregistrés sur le disque.

Si vous utilisez un projectile , il existe également une intégration en perspective .


5

Vous pouvez essayer le mode Eyebrowse , qui gère plusieurs dispositions de fenêtres (peut-être compliquées). Vous pouvez basculer entre les configurations de fenêtres à l'aide de touches telles que C-c C-w 1et C-c C-w 2.


1
Eyebrowse partage le tampon entre les espaces de travail. Cela pourrait être indésirable
sudeepdino008

2

Une solution «barebones» pourrait être utilisée C-x r wpour enregistrer l'état actuel de la fenêtre et C-x r jrevenir à une précédente.


2

J'utilise une combinaison de deux packages différents.

Plus important encore, j'utilise Projectile pour travailler sur un "projet" et des fichiers de recherche floue. J'utilise plusieurs cadres, un pour chaque projet sur lequel je travaille actuellement. Vous n'avez vraiment besoin que de connaître C-x 5 2et C-x 5 0de créer / tuer un cadre. Pour gérer la commutation entre les projets et pour stocker l'état de la configuration / fractionnement des fenêtres, j'utilise des groupes de travail pour les fenêtres (pour emacs) .

J'aime cette configuration car je peux potentiellement échanger un package contre un autre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.