elisp, compilation et messages d'erreur

Le
Nicolas Matringe
Bonsoir
J'essaie de bricoler un peu en elisp mais je n'arrive pas à déclarer
proprement mes variables locales.

Voilà à quoi mon code ressemble :

(defun qdp-asm-compile ()
"blablabla"
(interactive)
(let ((asm-file-name (buffer-file-name))
(bin-file-name (concat (file-name-sans-extension
(buffer-file-name)) ".bin"))
(asm-file-content (buffer-substring (point-min) (point-max)))))
)

Et déjà rien qu'avec ça j'ai des soucis.
Quand je fais un "byte compile" pour voir si ça marche j'ai pas mal de
messages que je ne comprends pas (où peut-on trouver de l'aide là dessus ?)
** `(buffer-file-name)' called for effect
** `(concat (file-name-sans-extension (buffer-file-name)) ".bin")'
called for effect
** `(buffer-substring (point-min) (point-max))' called for effect


Si par contre je déclare juste les variables puis que je leur affecte
des valeurs avec setq là ça marche.

Enfin au moins en posant mes questions ai-je trouvé quelques réponses.

Merci de votre aide
Nico
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Matthieu Moy
Le #21777821
Nicolas Matringe
Bonsoir
J'essaie de bricoler un peu en elisp mais je n'arrive pas à déclarer
proprement mes variables locales.

Voilà à quoi mon code ressemble :

(defun qdp-asm-compile ()
"blablabla"
(interactive)
(let ((asm-file-name (buffer-file-name))
(bin-file-name (concat (file-name-sans-extension
(buffer-file-name)) ".bin"))
(asm-file-content (buffer-substring (point-min) (point-max)))))
)

Et déjà rien qu'avec ça j'ai des soucis.
Quand je fais un "byte compile" pour voir si ça marche



Avant ça, tu peux aussi faire un C-x C-e derrière la parenthèse
fermante, voire un C-M-x dans le (defun ...), pour évaluer le morceau
de lisp en live.

j'ai pas mal de messages que je ne comprends pas (où peut-on trouver
de l'aide là dessus ?) ** `(buffer-file-name)' called for effect **
`(concat (file-name-sans-extension (buffer-file-name)) ".bin")'
called for effect ** `(buffer-substring (point-min) (point-max))'
called for effect



Tu appelles des fonctions qui n'ont pas d'effet de bord, et tu
n'utilises pas leur résultat. Le compilateur te préviens que ça ne
sert à rien.

--
Matthieu
Nicolas Matringe
Le #21777811
Matthieu Moy a écrit :
Nicolas Matringe


[...]
Quand je fais un "byte compile" pour voir si ça marche



Avant ça, tu peux aussi faire un C-x C-e derrière la parenthèse
fermante, voire un C-M-x dans le (defun ...), pour évaluer le morceau
de lisp en live.



Ah c'est bien, ça...


Tu appelles des fonctions qui n'ont pas d'effet de bord, et tu
n'utilises pas leur résultat. Le compilateur te préviens que ça ne
sert à rien.



Certes, je n'en fais encore rien (mais forcément, il peut pas savoir que
j'ai l'intention d'en faire quelque chose plus tard)
Ca existe un glossaire des messages d'erreur, quelque part ? J'ai rien
trouvé.

Nico
Vincent Belaïche
Le #21777801
Lorsque tu fais un `let' la portée des variables que tu définis
est limitée à l'intérieur du let. Donc si tes variables ne sont pas
utilisées dans le corps du let, le compilateur sait qu'elles ne sont pas
utilisée du tout.

A+
Vincent.

Nicolas Matringe a écrit :
Matthieu Moy a écrit :
Nicolas Matringe


[...]
Quand je fais un "byte compile" pour voir si ça marche



Avant ça, tu peux aussi faire un C-x C-e derrière la parenthèse
fermante, voire un C-M-x dans le (defun ...), pour évaluer le morceau
de lisp en live.



Ah c'est bien, ça...


Tu appelles des fonctions qui n'ont pas d'effet de bord, et tu
n'utilises pas leur résultat. Le compilateur te préviens que ça ne
sert à rien.



Certes, je n'en fais encore rien (mais forcément, il peut pas savoir que
j'ai l'intention d'en faire quelque chose plus tard)
Ca existe un glossaire des messages d'erreur, quelque part ? J'ai rien
trouvé.

Nico
Nicolas Matringe
Le #21777791
Vincent Belaïche a écrit :

Lorsque tu fais un `let' la portée des variables que tu définis
est limitée à l'intérieur du let. Donc si tes variables ne sont pas
utilisées dans le corps du let, le compilateur sait qu'elles ne sont pas
utilisée du tout.




J'avais bien compris la portée du let, c'est juste le message d'erreur
qui me semblait abscons.

Nicolas
Publicité
Poster une réponse
Anonyme