Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ouverture d'une nouvelle fenêtre

10 réponses
Avatar
Stéphane Dutailly
Bonjour à tous,

Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.
La solution que j'ai trouvé consiste à faire un glisser-déposer de mon
fichier dans ma première session mais j'aimerais bien ne pas faire tout
le temps cela.
J'ai cherché un peu dans la doc du côté des frames et des windows mais
tout cela est encore obscur pour moi. J'ai essayé pop-up-frames 1 qui ne
résout pas le problème.
Auriez-vous une solution à me proposer?
Merci d'avance.
Stéphane

10 réponses

Avatar
Paul Gaborit
À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):

Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.
La solution que j'ai trouvé consiste à faire un glisser-déposer de mon
fichier dans ma première session mais j'aimerais bien ne pas faire
tout le temps cela.
J'ai cherché un peu dans la doc du côté des frames et des windows mais
tout cela est encore obscur pour moi. J'ai essayé pop-up-frames 1 qui
ne résout pas le problème.
Auriez-vous une solution à me proposer?



Solution générale : emacsclient !

Ensuite, le paramétrage de emacs/emacsclient pour que ça convienne
parfaitement à vos besoins et usages est un peu délicat. ;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
JJ. Rétorré
Paul Gaborit disait le 03/09/11 que :

À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):

Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.





<snip>

Solution générale : emacsclient !

Ensuite, le paramétrage de emacs/emacsclient pour que ça convienne
parfaitement à vos besoins et usages est un peu délicat. ;-)



Ça suppose qu'emacs ait été lancé et avec server-mode activé.
N'y aurait-il pas moyen de créer un script qui lance emacs en
server-mode si aucune instance n'est lancée et qui lance emacsclient
sinon ? comme le fait mon butineur web ?

--
JJR.
Avatar
Frédéric Perrin
JJ. Rétorré <jj.r&torr&@gmail.com> writes:
Paul Gaborit disait le 03/09/11 que :
À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):
Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se l ance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.



Solution générale : emacsclient !



N'y aurait-il pas moyen de créer un script qui lance emacs en
server-mode si aucune instance n'est lancée et qui lance emacsclient
sinon ? comme le fait mon butineur web ?



girafe:~% cat $( which $EDITOR )
#!/bin/sh
exec emacsclient -a emacs --create-frame "$@"

En ajoutant, bien sûr, (server-start) dans ton fichier d'init.
Avatar
Stéphane Dutailly
Le 09/03/2011 16:34, Paul Gaborit a écrit :

À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):

Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.
La solution que j'ai trouvé consiste à faire un glisser-déposer de mon
fichier dans ma première session mais j'aimerais bien ne pas faire
tout le temps cela.
J'ai cherché un peu dans la doc du côté des frames et des windows mais
tout cela est encore obscur pour moi. J'ai essayé pop-up-frames 1 qui
ne résout pas le problème.
Auriez-vous une solution à me proposer?



Solution générale : emacsclient !

Ensuite, le paramétrage de emacs/emacsclient pour que ça convienne
parfaitement à vos besoins et usages est un peu délicat. ;-)




Merci Paul mais je ne comprends pas bien ce qu'il faut faire. La doc sur
emacswiki dit ceci:

Starting Server With Emacs 23 : Easy Way

Bash Shells

RichardRiley : With emacs 23 simply do something like

#!/bin/bash
export GDK_NATIVE_WINDOWS=1
exec emacsclient --alternate-editor="" -c "$@"
Then

export EDITOR=~/bin/edit
Where “edit” is the small script above. The key is the “” for
alternate-editor. emacsclient starts the server for you if and only if
it is not already running.


Cela signifie-t-il que je doive créer un fichier et écrire cela dedans?
Si oui, à quel endroit? Quel genre de fichier? Si non, est-ce quelque
chose à rajouter dans un fichier (pas dans le .emacs je suppose)?
Dois-je taper cela dans un terminal?
J'avoue que là, je ne comprends pas trop... Si vous aviez quelques
éclaircissements, je suis preneur.
Bien cordialement,
Stéphane
Avatar
Paul Gaborit
À (at) Wed, 09 Mar 2011 20:06:07 +0100,
JJ. Rétorré <jj.r&torr&@gmail.com> écrivait (wrote):

Paul Gaborit disait le 03/09/11 que :

À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):

Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.





<snip>

Solution générale : emacsclient !

Ensuite, le paramétrage de emacs/emacsclient pour que ça convienne
parfaitement à vos besoins et usages est un peu délicat. ;-)



Ça suppose qu'emacs ait été lancé et avec server-mode activé.
N'y aurait-il pas moyen de créer un script qui lance emacs en
server-mode si aucune instance n'est lancée et qui lance emacsclient
sinon ? comme le fait mon butineur web ?



C'est très bien expliqué sur le Wiki :
<http://www.emacswiki.org/emacs/EmacsClient>

En fait, emacsclient fait tout tout seul (et même lancer un emacs en
mode daemon si nécessaire).


--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Paul Gaborit
À (at) Wed, 09 Mar 2011 21:27:41 +0100,
Frédéric Perrin écrivait (wrote):

JJ. Rétorré <jj.r&torr&@gmail.com> writes:
Paul Gaborit disait le 03/09/11 que :
À (at) Wed, 09 Mar 2011 14:59:59 +0100,
Stéphane Dutailly écrivait (wrote):
Lorsque j'ouvre un nouveau fichier (en double-cliquant dessus) alors
qu'un précédent fichier est déjà ouvert, emacs se lance à nouveau et
j'ai donc deux sessions d'emacs d'ouvertes.



Solution générale : emacsclient !



N'y aurait-il pas moyen de créer un script qui lance emacs en
server-mode si aucune instance n'est lancée et qui lance emacsclient
sinon ? comme le fait mon butineur web ?



girafe:~% cat $( which $EDITOR )
#!/bin/sh
exec emacsclient -a emacs --create-frame "$@"

En ajoutant, bien sûr, (server-start) dans ton fichier d'init.



Mieux vaut la solution avec une chaîne vide comme valeur pour -a (c'est
la solution du wiki) :

% cat $( which $EDITOR )
#!/bin/sh
exec emacsclient -a "" --create-frame "$@"


--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Paul Gaborit
À (at) Wed, 09 Mar 2011 21:36:22 +0100,
Stéphane Dutailly écrivait (wrote):

Merci Paul mais je ne comprends pas bien ce qu'il faut faire. La doc
sur emacswiki dit ceci:

Starting Server With Emacs 23 : Easy Way

Bash Shells

RichardRiley : With emacs 23 simply do something like

#!/bin/bash
export GDK_NATIVE_WINDOWS=1
exec emacsclient --alternate-editor="" -c "$@"



C'est un script (un fichier texte) de 3 lignes à créer et à placer
quelque part où il sera vu par votre interpréteur de commandes.
Ci-dessous, on suppose qu'il est écrit dans "~/bin/edit" (il faut aussi
lui donner les droits d'exécution).

Then

export EDITOR=~/bin/edit



La variable EDITOR contient le chemin de l'éditeur de texte par défaut
pour les commandes.

Cela signifie-t-il que je doive créer un fichier et écrire cela
dedans? Si oui, à quel endroit? Quel genre de fichier? Si non, est-ce
quelque chose à rajouter dans un fichier (pas dans le .emacs je
suppose)? Dois-je taper cela dans un terminal?
J'avoue que là, je ne comprends pas trop... Si vous aviez quelques
éclaircissements, je suis preneur.



J'espère que les explications ci-dessus suffiront. Ensuite, il vous
restera à trouver comment configurer votre explorateur de fichiers (KDE,
Gnome, XFCEn autres...) pour qu'il fasse appel à ~/bin/edit plutôt qu'à
emacs.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Lucas Levrel
Le 10 mars 2011, Stéphane Dutailly a écrit :

export EDITOR=~/bin/edit

c'est à taper où? dans un terminal? Je suppose que ça ne ce mets pas dans le
script.



À mettre dans le fichier ~/.profile (fichier « caché » .profile de votre
répertoire perso). Sera pris en compte à la prochaine session.

Y a-t-il un nom particulier à donner au fichier de script, ou n'importe quel
nom convient?



Comme dit, n'importe quel nom convient mais la ligne « export ... »
suppose qu'il s'appelle « edit » dans le répertoire « bin » de votre
répertoire perso.

--
LL
Avatar
Paul Gaborit
À (at) Thu, 10 Mar 2011 09:56:37 +0100,
Stéphane Dutailly écrivait (wrote):

Merci Paul, je vais essayer. Deux dernières choses:

export EDITOR=~/bin/edit

c'est à taper où? dans un terminal? Je suppose que ça ne ce mets pas
dans le script.



Dans le fichier de configuration du shell que vous utilisez...

Y a-t-il un nom particulier à donner au fichier de script, ou
n'importe quel nom convient?



Ici, c'est "~/bin/edit". Mais si vous choisissez un autre nom, il faut
aussi changer la valeur donnée à EDITOR.


--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Pascal J. Bourguignon
Stéphane Dutailly writes:

Merci Paul, je vais essayer. Deux dernières choses:

export EDITOR=~/bin/edit

c'est à taper où? dans un terminal? Je suppose que ça ne se met pas
dans le script.




MacOSX cache un système unix. Il y a des introductions à unix pour les
utilisateurs avancés de MacOSX. Par exemple:

http://osxfaq.com/Tutorials/LearningCenter/

ou en français:

http://www.eyrolles.com/Informatique/Livre/introduction-a-unix-pour-mac-os-x-panther-9782841773046

--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.