OVH Cloud OVH Cloud

Gérer des configs différentes sur une même machine

8 réponses
Avatar
Christophe Cuq
Bijour les gens.

J'utilise un Emacs 21.3.50 sur un mac équipé de osX 10.2.8.

J'aurais besoin de gérer 2 configs différentes, selon que je suis en
console (dans un iTerm) ou en version Carbon (version native) car
dans ces 2 environnements les claviers ne sont pas les mêmes
(mac-roman dans un cas (carbon), et iso-8859-15-mac dans l'autre),
l'environnement n'est pas le même non plus...

J'ai eu beau parcourir la doc, fouiller google... aucune solution.

Quelqu'un aurait-il un piste ??

--
CHC

8 réponses

Avatar
Christophe Cuq
Christophe Cuq writes:

Je me réponds à moi même pour dire que j'ai trouvé une solution à mon
problème, ça peut peut-être servir à d'autres. Il suffit d'utiliser
"cond" plutôt que "if" et ça fonctionne très bien :

,----
| (cond
| ((equal 'mac window-system)
| (set-keyboard-coding-system 'mac-roman)
| (setq default-frame-alist '((width . 132) (height . 44) (font . "fontset-mac")))
| ))
|
|
| (cond
| ((equal 'nil window-system)
| (set-keyboard-coding-system 'iso-8859-15-mac)
| (global-set-key [f4] 'help-command)
| (global-set-key [(control h)] 'delete-backward-char)
| ))
`----

--
CHC
Avatar
Pascal Bourguignon
Christophe Cuq writes:

Christophe Cuq writes:

Je me réponds à moi même pour dire que j'ai trouvé une solution à mon
problème, ça peut peut-être servir à d'autres. Il suffit d'utiliser
"cond" plutôt que "if" et ça fonctionne très bien :



Oui, mais lisp a moins de syntaxe que C. Les parenthèses ne
remplacent pas les accolades.


En emacs lisp, la syntaxe de if (faire C-h f if RETURN) est:

(if condition
une-instruction-exécutée-si-condition-n-est-pas-nil
zero-ou-plusieurs-instructions-exécutées-si-condition-est-nil)

Si on veut mettre plusieurs instructions là où une seule est attendue,
on doit utiliser une forme spéciale comme prog1, prog2 ou progn.

Donc:

(if (equal 'nil window-system)
(progn
(set-keyboard-coding-system 'iso-8859-15-mac)
(global-set-key [f4] 'help-command)
(global-set-key [(control h)] 'delete-backward-char)
)
(progn
(set-keyboard-coding-system 'mac-roman)
(setq default-frame-alist '((width . 132) (height . 44)
(font . "fontset-mac")))
))


--
__Pascal_Bourguignon__
http://www.informatimago.com/
Do not adjust your mind, there is a fault in reality.
Avatar
Christophe Cuq
Pascal Bourguignon writes:

Oui, mais lisp a moins de syntaxe que C. Les parenthèses ne
remplacent pas les accolades.



Mes connaissances de Lisp avant de faire ça se limitaient à recopier
des trucs que je trouvais ou à poser des setq :)

Si on veut mettre plusieurs instructions là où une seule est
attendue, on doit utiliser une forme spéciale comme prog1, prog2 ou
progn.



Ahhhhh :) Merci beaucoup.

--
CHC
Avatar
Remi Vanicat
Pascal Bourguignon writes:

Christophe Cuq writes:

Christophe Cuq writes:

Je me réponds à moi même pour dire que j'ai trouvé une solution à mon
problème, ça peut peut-être servir à d'autres. Il suffit d'utiliser
"cond" plutôt que "if" et ça fonctionne très bien :



Oui, mais lisp a moins de syntaxe que C. Les parenthèses ne
remplacent pas les accolades.


En emacs lisp, la syntaxe de if (faire C-h f if RETURN) est:

(if condition
une-instruction-exécutée-si-condition-n-est-pas-nil
zero-ou-plusieurs-instructions-exécutées-si-condition-est-nil)

Si on veut mettre plusieurs instructions là où une seule est attendue,
on doit utiliser une forme spéciale comme prog1, prog2 ou progn.

Donc:

(if (equal 'nil window-system)
(progn
(set-keyboard-coding-system 'iso-8859-15-mac)
(global-set-key [f4] 'help-command)
(global-set-key [(control h)] 'delete-backward-char)
)
(progn
(set-keyboard-coding-system 'mac-roman)
(setq default-frame-alist '((width . 132) (height . 44)
(font . "fontset-mac")))
))



le deuxième progn ne sert a rien :


(if (equal 'nil window-system)
(progn
(set-keyboard-coding-system 'iso-8859-15-mac)
(global-set-key [f4] 'help-command)
(global-set-key [(control h)] 'delete-backward-char))
(set-keyboard-coding-system 'mac-roman)
(setq default-frame-alist '((width . 132) (height . 44)
(font . "fontset-mac"))))

fait la même chose que votre code. (j'ai en plus essayer de respecter
l'indetation standard, mais c'est surtout une question de goût).

--
Rémi Vanicat

Avatar
Matthieu Moy
Christophe Cuq writes:

Christophe Cuq writes:

Je me réponds à moi même pour dire que j'ai trouvé une solution à mon
problème, ça peut peut-être servir à d'autres. Il suffit d'utiliser
"cond" plutôt que "if" et ça fonctionne très bien :



On peut faire mieux :

,----
| (cond
| ((equal 'mac window-system)
| (set-keyboard-coding-system 'mac-roman)
| (setq default-frame-alist '((width . 132) (height . 44) (font . "fontset-mac")))


)
| ((equal 'nil window-system)
| (set-keyboard-coding-system 'iso-8859-15-mac)
| (global-set-key [f4] 'help-command)
| (global-set-key [(control h)] 'delete-backward-char)
| ))
`----



Un seul "cond" :-)

Et C-h f case RET pour faire encore mieux ...

--
Matthieu
Avatar
Christophe Cuq
Matthieu Moy writes:

Un seul "cond" :-)



Pffffff :)

Et C-h f case RET pour faire encore mieux ...



Un jour j'aurai le temps de me mettre vraiment au lisp.

--
CHC, un jour.
Avatar
Daniel Déchelotte
Christophe Cuq a écrit :

| Matthieu Moy writes:
|
| > Et C-h f case RET pour faire encore mieux ...
|
| Un jour j'aurai le temps de me mettre vraiment au lisp.

Bah, a quoi ca sert, le Lisp, a part pour ecrire son .emacs ?





Allez, j'ose la crucipublication sur fr.comp.lang.lisp ? Noon, c'est juste une
boutade. Mais a mon avis (j'espere !) ca en aura fait sourire quelques'uns. ;-)

Daniel
--
http://yo.dan.free.fr/
Avatar
Christophe Cuq
Daniel Déchelotte writes:

Christophe Cuq a écrit :

| Un jour j'aurai le temps de me mettre vraiment au lisp.

Bah, a quoi ca sert, le Lisp, a part pour ecrire son .emacs ?



Tant qu'on pourra pas écrire son .emacs dans un vrai langage, en Perl
ou en Ruby quoi, faut bien se mettre au Lisp, hein :)

Allez, j'ose la crucipublication sur fr.comp.lang.lisp ? Noon, c'est
juste une boutade. Mais a mon avis (j'espere !) ca en aura fait
sourire quelques'uns. ;-)



:)

--
CHC, de vrais morceaux de troll se sont glissés dans ce message; sauras-tu
les trouver ami lecteur ?