associer le lancement d'un script shell a une touche
10 réponses
Eric Jacoboni
Bonjour,
J'ai un trou (j'ai déjà eu la solution, dans le temps, mais elle n'a
pas survécue à un remaniement en profondeur de mon .emacs).
Voilà mon pb : j'utilise Emacs sous OS X et c'est une galère
incommensurable pour imprimer. Faut déjà que Ghostscript reconnaisse
le système d'impression d'Apple (qui veut du pdf) et je ne cause pas
du problème des accents qui sont irrémédiablement transformés, sauf
peut-être si on utilise l'UTF8, ce qui n'est pas mon cas puisque je
code en Latin-1.
Bref, j'ai donc sorti l'artillerie lourde et j'ai écrit un script
shell qui résoud le pb à la Pyhrrus (mais ça marche). Bon, maintenant
je voudrais appeler ce script à partir d'Emacs via une touche de
fonction, F10 par exemple, (ou même, pourquoi pas, en l'associant à la
commande "Postscript Print Buffer").
Ce script s'appelle ~/bin/printps et attend un nom de fichier en
paramètre. Donc je voudrais que ce soit le nom du fichier contenu dans
le buffer qui lui soit automatiquement passé.
Si quelqu'un a une idée ou une URL, je prend.
--
Éric Jacoboni, né il y a 1401129047 secondes
Tu peux changer le `nil' pour récupérer la sortie de ton script dans un buffer, si c'est utile.
Il faut aussi faire attention aux buffers qui ne sont pas attachés à un fichier, comme "*scratch*". Si tu veux supporter de tels buffers, il te faudra enregistrer un fichier temporaire, en passer le nom à ton script, puis supprimer le fichier temporaire. Ceci pourrait t'intéresser :
Tu peux changer le `nil' pour récupérer la sortie de ton script dans
un buffer, si c'est utile.
Il faut aussi faire attention aux buffers qui ne sont pas attachés à
un fichier, comme "*scratch*". Si tu veux supporter de tels buffers,
il te faudra enregistrer un fichier temporaire, en passer le nom à ton
script, puis supprimer le fichier temporaire. Ceci pourrait
t'intéresser :
Tu peux changer le `nil' pour récupérer la sortie de ton script dans un buffer, si c'est utile.
Il faut aussi faire attention aux buffers qui ne sont pas attachés à un fichier, comme "*scratch*". Si tu veux supporter de tels buffers, il te faudra enregistrer un fichier temporaire, en passer le nom à ton script, puis supprimer le fichier temporaire. Ceci pourrait t'intéresser :
Si j'ai bien compris le problème, ceci peut être un point de départ.
Oui, c'est bien ça... J'avais trouvé un truc similaire mais en utilisant (call-process "sh" nil t t "-c" (concat "~/bin/printps "buffer-file-name)) ce qui avait pour fâcheuse conséquence de balancer la sortie de la commande dans le buffer... J'étais justement en train de chercher la fonction magique qui évitait cela ;)
Je vais tester illico. Je pense qu'il y a un pb avec l'appel de l'appli qui visualise le pdf, mais c'est un autre problème.
Il faut aussi faire attention aux buffers qui ne sont pas attachés à un fichier, comme "*scratch*".
A priori, ce n'est que pour imprimer des fichiers contenant du code source en différents langages, donc ça devrait suffire.
Merci, -- Éric Jacoboni, né il y a 1401139869 secondes
drkm <usenet.fcaemacs@fgeorges.org> writes:
Si j'ai bien compris le problème, ceci peut être un point de départ.
Oui, c'est bien ça... J'avais trouvé un truc similaire mais en
utilisant
(call-process "sh" nil t t "-c" (concat "~/bin/printps "buffer-file-name))
ce qui avait pour fâcheuse conséquence de balancer
la sortie de la commande dans le buffer... J'étais justement en train
de chercher la fonction magique qui évitait cela ;)
Si j'ai bien compris le problème, ceci peut être un point de départ.
Oui, c'est bien ça... J'avais trouvé un truc similaire mais en utilisant (call-process "sh" nil t t "-c" (concat "~/bin/printps "buffer-file-name)) ce qui avait pour fâcheuse conséquence de balancer la sortie de la commande dans le buffer... J'étais justement en train de chercher la fonction magique qui évitait cela ;)
A priori, ce n'est que pour imprimer des fichiers contenant du code source en différents langages, donc ça devrait suffire.
Je ne sais pas si cela a un rapport avec ton problème, mais connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
--drkm
Eric Jacoboni
drkm writes:
Je ne sais pas si cela a un rapport avec ton problème, mais connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec les applis natives OS X, l'impression est une vraie plaie (et je ne parle pas des encodages...).
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier .ps temporaire, puis le lancement du visualisateur pdf qui me permet (ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en utilisant ta suggestion), il ne se passe strictement rien... Rien n'est créé dans /tmp : il semblerait que start-process-shell-command ne fait rien.
-- Éric Jacoboni, né il y a 1401142423 secondes
drkm <usenet.fcaemacs@fgeorges.org> writes:
Je ne sais pas si cela a un rapport avec ton problème, mais
connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et
que c'est un vrai merdier pour s'y retrouver dans la config de
l'impression quand on ne se contente pas du panneau de configuration
du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu
de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec
les applis natives OS X, l'impression est une vraie plaie (et je ne
parle pas des encodages...).
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier
.ps temporaire, puis le lancement du visualisateur pdf qui me permet
(ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en
utilisant ta suggestion), il ne se passe strictement rien... Rien
n'est créé dans /tmp : il semblerait que start-process-shell-command
ne fait rien.
Je ne sais pas si cela a un rapport avec ton problème, mais connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec les applis natives OS X, l'impression est une vraie plaie (et je ne parle pas des encodages...).
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier .ps temporaire, puis le lancement du visualisateur pdf qui me permet (ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en utilisant ta suggestion), il ne se passe strictement rien... Rien n'est créé dans /tmp : il semblerait que start-process-shell-command ne fait rien.
-- Éric Jacoboni, né il y a 1401142423 secondes
Sebastien Kirche
Salut,
Le 13 oct 2004, Eric Jacoboni a formulé :
drkm writes:
> Je ne sais pas si cela a un rapport avec ton problème, mais > connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Au boulot je roule également avec Emacs et OSX (10.3) et l'impression fonctionne comme un charme.
As-tu été fouiner dans l'interface cups ?
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le fichier ps pour transformer en pdf (je passe alors par une commande ghostscript car panther a du mal avec le postscript emacs) pour des trucs du genre 2 pages par feuille.
Si tu veux explorer cette voie, je peux te filer des détails techniques demain.
Pour ton problème de script, par contre je ne vois pas.
Sébastien Kirche
Salut,
Le 13 oct 2004, Eric Jacoboni a formulé :
drkm <usenet.fcaemacs@fgeorges.org> writes:
> Je ne sais pas si cela a un rapport avec ton problème, mais
> connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et
que c'est un vrai merdier pour s'y retrouver dans la config de
l'impression quand on ne se contente pas du panneau de configuration
du système ;)
Au boulot je roule également avec Emacs et OSX (10.3) et l'impression
fonctionne comme un charme.
As-tu été fouiner dans l'interface cups ?
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une
laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le
fichier ps pour transformer en pdf (je passe alors par une commande
ghostscript car panther a du mal avec le postscript emacs) pour des trucs du
genre 2 pages par feuille.
Si tu veux explorer cette voie, je peux te filer des détails techniques
demain.
Pour ton problème de script, par contre je ne vois pas.
> Je ne sais pas si cela a un rapport avec ton problème, mais > connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Au boulot je roule également avec Emacs et OSX (10.3) et l'impression fonctionne comme un charme.
As-tu été fouiner dans l'interface cups ?
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le fichier ps pour transformer en pdf (je passe alors par une commande ghostscript car panther a du mal avec le postscript emacs) pour des trucs du genre 2 pages par feuille.
Si tu veux explorer cette voie, je peux te filer des détails techniques demain.
Pour ton problème de script, par contre je ne vois pas.
Sébastien Kirche
drkm
Eric Jacoboni writes:
drkm writes:
Je ne sais pas si cela a un rapport avec ton problème, mais connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec les applis natives OS X, l'impression est une vraie plaie (et je ne parle pas des encodages...).
`ps2pdf(1)' n'est d'aucune aide ?
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier .ps temporaire, puis le lancement du visualisateur pdf qui me permet (ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en utilisant ta suggestion), il ne se passe strictement rien... Rien n'est créé dans /tmp : il semblerait que start-process-shell-command ne fait rien.
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer en question ? Et que donne :
Je ne sais pas si cela a un rapport avec ton problème, mais
connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et
que c'est un vrai merdier pour s'y retrouver dans la config de
l'impression quand on ne se contente pas du panneau de configuration
du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu
de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec
les applis natives OS X, l'impression est une vraie plaie (et je ne
parle pas des encodages...).
`ps2pdf(1)' n'est d'aucune aide ?
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier
.ps temporaire, puis le lancement du visualisateur pdf qui me permet
(ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en
utilisant ta suggestion), il ne se passe strictement rien... Rien
n'est créé dans /tmp : il semblerait que start-process-shell-command
ne fait rien.
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer
en question ? Et que donne :
Je ne sais pas si cela a un rapport avec ton problème, mais connais-tu PS Print, livré avec GNU Emacs (et XEmacs, je pense) ?
En fait, mon problème est lié au fait que tout ça tourne sous OS X, et que c'est un vrai merdier pour s'y retrouver dans la config de l'impression quand on ne se contente pas du panneau de configuration du système ;)
Parce que, que ce soit sous FreeBSD ou nunusque, je n'avais jamais eu de problème pour imprimer en PS à partir d'Emacs. En gros, hormis avec les applis natives OS X, l'impression est une vraie plaie (et je ne parle pas des encodages...).
`ps2pdf(1)' n'est d'aucune aide ?
Bon, mais là, il y a un truc que je ne m'explique plus quand même...
Mon script marche. Si je le lance à partir d'un terminal en faisant :
J'obtiens le résultat escompté. C'est à dire la création d'un fichier .ps temporaire, puis le lancement du visualisateur pdf qui me permet (ouf) d'imprimer sous OS X.
Si je fais f10 dans Emacs à partir du buffer parfaits_2.adb (en utilisant ta suggestion), il ne se passe strictement rien... Rien n'est créé dans /tmp : il semblerait que start-process-shell-command ne fait rien.
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer en question ? Et que donne :
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le fichier ps pour transformer en pdf (je passe alors par une commande ghostscript car panther a du mal avec le postscript emacs) pour des trucs du genre 2 pages par feuille.
Chez moi, au mieux, le print-buffer fonctionne mais me transforme tous mes caractères accentués (mes textes sont en iso-8859-1).
Pour l'impression via ghostscript, j'ai fouillé dans toutes les configs (mon imprimante n'est pas postscript) et ça m'a semblé si clair que j'ai préféré écrire un script à la main ;)
Si tu veux explorer cette voie, je peux te filer des détails techniques demain.
Oui, éventuellement. Je vais d'abord essayer de comprendre pourquoi mon script ne marche pas lorsqu'il est appelé à partir d'Emacs.
Merci,
-- Éric Jacoboni, né il y a 1401149124 secondes
Sebastien Kirche <sebastien.kirche.no@spam.free.fr.invalid> writes:
As-tu été fouiner dans l'interface cups ?
Oui...
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une
laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le
fichier ps pour transformer en pdf (je passe alors par une commande
ghostscript car panther a du mal avec le postscript emacs) pour des trucs du
genre 2 pages par feuille.
Chez moi, au mieux, le print-buffer fonctionne mais me transforme tous
mes caractères accentués (mes textes sont en iso-8859-1).
Pour l'impression via ghostscript, j'ai fouillé dans toutes les
configs (mon imprimante n'est pas postscript) et ça m'a semblé si
clair que j'ai préféré écrire un script à la main ;)
Si tu veux explorer cette voie, je peux te filer des détails techniques
demain.
Oui, éventuellement. Je vais d'abord essayer de comprendre pourquoi
mon script ne marche pas lorsqu'il est appelé à partir d'Emacs.
Avec ça, le M-x ps-print-buffer roule sans problème (j'ai aussi une laserjet-4 qui marche en ps) ou encore C-u M-x ps-print-buffer si je veux le fichier ps pour transformer en pdf (je passe alors par une commande ghostscript car panther a du mal avec le postscript emacs) pour des trucs du genre 2 pages par feuille.
Chez moi, au mieux, le print-buffer fonctionne mais me transforme tous mes caractères accentués (mes textes sont en iso-8859-1).
Pour l'impression via ghostscript, j'ai fouillé dans toutes les configs (mon imprimante n'est pas postscript) et ça m'a semblé si clair que j'ai préféré écrire un script à la main ;)
Si tu veux explorer cette voie, je peux te filer des détails techniques demain.
Oui, éventuellement. Je vais d'abord essayer de comprendre pourquoi mon script ne marche pas lorsqu'il est appelé à partir d'Emacs.
Merci,
-- Éric Jacoboni, né il y a 1401149124 secondes
Eric Jacoboni
drkm writes:
`ps2pdf(1)' n'est d'aucune aide ?
Si, en fait c'est lui que j'utilise dans mon script :
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les messages de mon script : (buffer-file-name) contient le chemin complet du fichier, donc /tmp/$1.ps est interprété comme /tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment, ça le fait pas...
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un $(basename $1) et ça va tout de suite mieux ;)
Merci pour la piste. -- Éric Jacoboni, né il y a 1401149335 secondes
drkm <usenet.fcaemacs@fgeorges.org> writes:
`ps2pdf(1)' n'est d'aucune aide ?
Si, en fait c'est lui que j'utilise dans mon script :
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb
Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les
messages de mon script : (buffer-file-name) contient le chemin complet
du fichier, donc /tmp/$1.ps est interprété comme
/tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment,
ça le fait pas...
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais
mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un
$(basename $1) et ça va tout de suite mieux ;)
Merci pour la piste.
--
Éric Jacoboni, né il y a 1401149335 secondes
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les messages de mon script : (buffer-file-name) contient le chemin complet du fichier, donc /tmp/$1.ps est interprété comme /tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment, ça le fait pas...
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un $(basename $1) et ça va tout de suite mieux ;)
Merci pour la piste. -- Éric Jacoboni, né il y a 1401149335 secondes
drkm
Eric Jacoboni writes:
drkm writes:
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer en question ?
Ça répond : <f10> runs the command #<process printing> ce qui me semble correct vu que j'ai nommé ce process 'printing'
Tiens, je me serais attendu à une réponse genre « <f10> runs the command (lambda () ... ». On dirait que la fonction a été évaluée avant d'être liée à f10. Mais si ça marche, ce doit juste être une affaire d'affichage. Bizarre, tout de même.
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les messages de mon script : (buffer-file-name) contient le chemin complet du fichier,
Heureusement pour ton script, d'ailleurs.
donc /tmp/$1.ps est interprété comme /tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment, ça le fait pas...
Bah oui ;-)
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un $(basename $1) et ça va tout de suite mieux ;)
`basename(1)' s'écrit en Emacs Lisp `file-name-nondirectory()'. Mais je pense que ce serait une grosse bêtise de le faire dans Emacs, avant la création du processus. Ta solution est bien meilleure. Il faut bien que ton script trouve le bon fichier.
Et cela est plus simple que de s'assurer que le répertoire courant du script est le bon. Je pense notamment aux éventuels scripts de démarrage lus par le shell. Il m'est déjà arrivé d'y mettre des `cd(1)'.
Merci pour la piste.
Mais pas de quoi :-)
Je te conseille également de faire accepter plusieurs arguments à ton script. J'ai également un tel script. En fait, une partie est en Emacs Lisp, et le script appelle Emacs à peu près comme ceci :
Les fichiers sont écrits dans un répertoire dédié (ce n'est pas le mieux, mais c'est facile à implémenter). Comme je n'ai pas d'imprimante chez moi, il appelle `ps2pdf(1)' sur les PostScript générés, puis fait un tarball des PDFs enfin obtenus.
Comme il utilise PS Print, je peux ajouter facilement des zebras stripes, utiliser un feuille par page ou pour deux pages, il utilise la fontification du mode associé au fichier, etc. Ce qui est agréable, c'est lorsque j'ai été amené à utiliser des langages nouveaux pour moi. J'appelais mon script normalement, et le résultat était celui de mes buffers Emacs, sans avoir rien fait de particulier :-)
Le trait de soulignement initial est ajouté par le script pour éviter d'avoir des problèmes sous MS Windows en imprimant .emacs, « ne contenant pas de nom de fichier », car commençant par un point ...
Dès que je dois imprimer, il me suffit donc d'utiliser `emacs-ps-print(1)', et de récupérer l'archive :-)
--drkm
Eric Jacoboni <jaco@neottia.net> writes:
drkm <usenet.fcaemacs@fgeorges.org> writes:
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer
en question ?
Ça répond : <f10> runs the command #<process printing>
ce qui me semble correct vu que j'ai nommé ce process 'printing'
Tiens, je me serais attendu à une réponse genre « <f10> runs the
command (lambda () ... ». On dirait que la fonction a été évaluée
avant d'être liée à f10. Mais si ça marche, ce doit juste être une
affaire d'affichage. Bizarre, tout de même.
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb
Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les
messages de mon script : (buffer-file-name) contient le chemin complet
du fichier,
Heureusement pour ton script, d'ailleurs.
donc /tmp/$1.ps est interprété comme
/tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment,
ça le fait pas...
Bah oui ;-)
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais
mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un
$(basename $1) et ça va tout de suite mieux ;)
`basename(1)' s'écrit en Emacs Lisp `file-name-nondirectory()'.
Mais je pense que ce serait une grosse bêtise de le faire dans Emacs,
avant la création du processus. Ta solution est bien meilleure. Il
faut bien que ton script trouve le bon fichier.
Et cela est plus simple que de s'assurer que le répertoire courant
du script est le bon. Je pense notamment aux éventuels scripts de
démarrage lus par le shell. Il m'est déjà arrivé d'y mettre des
`cd(1)'.
Merci pour la piste.
Mais pas de quoi :-)
Je te conseille également de faire accepter plusieurs arguments à
ton script. J'ai également un tel script. En fait, une partie est en
Emacs Lisp, et le script appelle Emacs à peu près comme ceci :
Les fichiers sont écrits dans un répertoire dédié (ce n'est pas le
mieux, mais c'est facile à implémenter). Comme je n'ai pas
d'imprimante chez moi, il appelle `ps2pdf(1)' sur les PostScript
générés, puis fait un tarball des PDFs enfin obtenus.
Comme il utilise PS Print, je peux ajouter facilement des zebras
stripes, utiliser un feuille par page ou pour deux pages, il utilise
la fontification du mode associé au fichier, etc. Ce qui est
agréable, c'est lorsque j'ai été amené à utiliser des langages
nouveaux pour moi. J'appelais mon script normalement, et le résultat
était celui de mes buffers Emacs, sans avoir rien fait de
particulier :-)
Le trait de soulignement initial est ajouté par le script pour
éviter d'avoir des problèmes sous MS Windows en imprimant .emacs, « ne
contenant pas de nom de fichier », car commençant par un point ...
Dès que je dois imprimer, il me suffit donc d'utiliser
`emacs-ps-print(1)', et de récupérer l'archive :-)
Je ne sais pas, là comme ça. Que donne `C-h c f10' dans le buffer en question ?
Ça répond : <f10> runs the command #<process printing> ce qui me semble correct vu que j'ai nommé ce process 'printing'
Tiens, je me serais attendu à une réponse genre « <f10> runs the command (lambda () ... ». On dirait que la fonction a été évaluée avant d'être liée à f10. Mais si ça marche, ce doit juste être une affaire d'affichage. Bizarre, tout de même.
/Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb Process mon processus finished
Mais, du coup, j'ai compris le pb en faisant sortir dans *TMP* les messages de mon script : (buffer-file-name) contient le chemin complet du fichier,
Heureusement pour ton script, d'ailleurs.
donc /tmp/$1.ps est interprété comme /tmp//Users/jaco/Travail/Ada/Mes_Tps/parfaits_2.adb.ps et, évidemment, ça le fait pas...
Bah oui ;-)
Bon, j'imagine qu'il y a moyen de changer ça en Emacs mais je connais mieux le shell qu'Emacs donc, en attendant, j'ai remplacé ce $1 par un $(basename $1) et ça va tout de suite mieux ;)
`basename(1)' s'écrit en Emacs Lisp `file-name-nondirectory()'. Mais je pense que ce serait une grosse bêtise de le faire dans Emacs, avant la création du processus. Ta solution est bien meilleure. Il faut bien que ton script trouve le bon fichier.
Et cela est plus simple que de s'assurer que le répertoire courant du script est le bon. Je pense notamment aux éventuels scripts de démarrage lus par le shell. Il m'est déjà arrivé d'y mettre des `cd(1)'.
Merci pour la piste.
Mais pas de quoi :-)
Je te conseille également de faire accepter plusieurs arguments à ton script. J'ai également un tel script. En fait, une partie est en Emacs Lisp, et le script appelle Emacs à peu près comme ceci :
Les fichiers sont écrits dans un répertoire dédié (ce n'est pas le mieux, mais c'est facile à implémenter). Comme je n'ai pas d'imprimante chez moi, il appelle `ps2pdf(1)' sur les PostScript générés, puis fait un tarball des PDFs enfin obtenus.
Comme il utilise PS Print, je peux ajouter facilement des zebras stripes, utiliser un feuille par page ou pour deux pages, il utilise la fontification du mode associé au fichier, etc. Ce qui est agréable, c'est lorsque j'ai été amené à utiliser des langages nouveaux pour moi. J'appelais mon script normalement, et le résultat était celui de mes buffers Emacs, sans avoir rien fait de particulier :-)
Le trait de soulignement initial est ajouté par le script pour éviter d'avoir des problèmes sous MS Windows en imprimant .emacs, « ne contenant pas de nom de fichier », car commençant par un point ...
Dès que je dois imprimer, il me suffit donc d'utiliser `emacs-ps-print(1)', et de récupérer l'archive :-)
--drkm
Christophe Cuq
Sebastien Kirche writes:
Au boulot je roule également avec Emacs et OSX (10.3) et l'impression fonctionne comme un charme.
Gniiii ? Ça va faire 18 mois que j'essaie de faire fonctionner ça, sans jamais y être parvenu.
As-tu été fouiner dans l'interface cups ?
Oui, et je n'y ai rien trouvé.
Si tu veux explorer cette voie, je peux te filer des détails techniques demain.
Perso, je veux bien, oui.
-- CHC
Sebastien Kirche <sebastien.kirche.no@spam.free.fr.invalid> writes:
Au boulot je roule également avec Emacs et OSX (10.3) et l'impression
fonctionne comme un charme.
Gniiii ? Ça va faire 18 mois que j'essaie de faire fonctionner ça,
sans jamais y être parvenu.
As-tu été fouiner dans l'interface cups ?
Oui, et je n'y ai rien trouvé.
Si tu veux explorer cette voie, je peux te filer des détails techniques
demain.