j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers
de conf.
Ma question du moment est quelle différence entre un setq et defvar pour
définir une variable par example dans .emacs pour se référer à un répertoire
ou créer une chaîne ?
Est-ce que defvar est simplement plus propre car il permet de documenter la
variable ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Bernat
OoO En cette fin de matinée radieuse du mardi 05 avril 2005, vers 11:33, Sébastien Kirche disait:
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers de conf.
Ma question du moment est quelle différence entre un setq et defvar pour définir une variable par example dans .emacs pour se référer à un répertoire ou créer une chaîne ?
Est-ce que defvar est simplement plus propre car il permet de documenter la variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre de ne pas connaître la variable en question. Mais je suppose qu'avec defvar, il peut se plaindre qu'elle existe déjà. -- BOFH excuse #93: Feature not yet implimented
OoO En cette fin de matinée radieuse du mardi 05 avril 2005, vers
11:33, Sébastien Kirche <sebastien.kirche.no@spam.free.fr.invalid>
disait:
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers
de conf.
Ma question du moment est quelle différence entre un setq et defvar pour
définir une variable par example dans .emacs pour se référer à un répertoire
ou créer une chaîne ?
Est-ce que defvar est simplement plus propre car il permet de documenter la
variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre de ne
pas connaître la variable en question. Mais je suppose qu'avec defvar,
il peut se plaindre qu'elle existe déjà.
--
BOFH excuse #93:
Feature not yet implimented
OoO En cette fin de matinée radieuse du mardi 05 avril 2005, vers 11:33, Sébastien Kirche disait:
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers de conf.
Ma question du moment est quelle différence entre un setq et defvar pour définir une variable par example dans .emacs pour se référer à un répertoire ou créer une chaîne ?
Est-ce que defvar est simplement plus propre car il permet de documenter la variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre de ne pas connaître la variable en question. Mais je suppose qu'avec defvar, il peut se plaindre qu'elle existe déjà. -- BOFH excuse #93: Feature not yet implimented
Pascal Bourguignon
Sébastien Kirche writes:
Bonjour,
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers de conf.
Ma question du moment est quelle différence entre un setq et defvar pour définir une variable par example dans .emacs pour se référer à un répertoire ou créer une chaîne ?
setq assigne une variable.
(setq x 1) (setq x 2) (assert (= x 2))
defvar crée une variable (et n'assigne la valeur initiale que si la variable n'existait pas!)
(defvar y 1) (defvar y 2) (assert (= y 1))
Est-ce que defvar est simplement plus propre car il permet de documenter la variable ?
Si c'est une variable qui existe déjà, utiliser setq. Si on défini une nouvelle variable utiliser defvar. En plus, ça permet d'indiquer quelles variables sont utilisable avec la commande set-variable:
-- __Pascal Bourguignon__ http://www.informatimago.com/ Wanna go outside. Oh, no! Help! I got outside! Let me back inside!
Sébastien Kirche <sebastien.kirche.no@spam.free.fr.invalid> writes:
Bonjour,
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers
de conf.
Ma question du moment est quelle différence entre un setq et defvar pour
définir une variable par example dans .emacs pour se référer à un répertoire
ou créer une chaîne ?
setq assigne une variable.
(setq x 1)
(setq x 2)
(assert (= x 2))
defvar crée une variable (et n'assigne la valeur initiale que si la
variable n'existait pas!)
(defvar y 1)
(defvar y 2)
(assert (= y 1))
Est-ce que defvar est simplement plus propre car il permet de documenter la
variable ?
Si c'est une variable qui existe déjà, utiliser setq. Si on défini une
nouvelle variable utiliser defvar. En plus, ça permet d'indiquer
quelles variables sont utilisable avec la commande set-variable:
j'avance doucement sur emacs lisp et j'en profite pour remanier mes fichiers de conf.
Ma question du moment est quelle différence entre un setq et defvar pour définir une variable par example dans .emacs pour se référer à un répertoire ou créer une chaîne ?
setq assigne une variable.
(setq x 1) (setq x 2) (assert (= x 2))
defvar crée une variable (et n'assigne la valeur initiale que si la variable n'existait pas!)
(defvar y 1) (defvar y 2) (assert (= y 1))
Est-ce que defvar est simplement plus propre car il permet de documenter la variable ?
Si c'est une variable qui existe déjà, utiliser setq. Si on défini une nouvelle variable utiliser defvar. En plus, ça permet d'indiquer quelles variables sont utilisable avec la commande set-variable:
-- __Pascal Bourguignon__ http://www.informatimago.com/ Wanna go outside. Oh, no! Help! I got outside! Let me back inside!
Xavier Maillard
On 5 Apr 2005, Vincent Bernat wrote:
OoO En cette fin de matinée radieuse du mardi 05 avril 2005, vers 11:33, Sébastien Kirche disait:
> j'avance doucement sur emacs lisp et j'en profite pour > remanier mes fichiers de conf.
> Ma question du moment est quelle différence entre un setq et > defvar pour définir une variable par example dans .emacs pour > se référer à un répertoire ou créer une chaîne ?
> Est-ce que defvar est simplement plus propre car il permet de > documenter la variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre de ne pas connaître la variable en question. Mais je suppose qu'avec defvar, il peut se plaindre qu'elle existe déjà.
Exact mais je croyais que les devel Emacs avaient entammé un petit travail de chasse aux Warnings pour ces cas là.
Enfin pas grave, de toute façon que tu utilises l'un ou l'autre ne change rien sauf si tu veux faire un M-x set-variable.
Pour une variable existante, le setq s'impose pour définir une autre variable defvar (entre autre) doit être recommandé (plus propre).
OoO En cette fin de matinée radieuse du mardi 05 avril 2005,
vers 11:33, Sébastien Kirche
<sebastien.kirche.no@spam.free.fr.invalid> disait:
> j'avance doucement sur emacs lisp et j'en profite pour
> remanier mes fichiers de conf.
> Ma question du moment est quelle différence entre un setq et
> defvar pour définir une variable par example dans .emacs pour
> se référer à un répertoire ou créer une chaîne ?
> Est-ce que defvar est simplement plus propre car il permet de
> documenter la variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre
de ne pas connaître la variable en question. Mais je suppose
qu'avec defvar, il peut se plaindre qu'elle existe déjà.
Exact mais je croyais que les devel Emacs avaient entammé un
petit travail de chasse aux Warnings pour ces cas là.
Enfin pas grave, de toute façon que tu utilises l'un ou l'autre
ne change rien sauf si tu veux faire un M-x set-variable.
Pour une variable existante, le setq s'impose pour définir une
autre variable defvar (entre autre) doit être recommandé (plus
propre).
OoO En cette fin de matinée radieuse du mardi 05 avril 2005, vers 11:33, Sébastien Kirche disait:
> j'avance doucement sur emacs lisp et j'en profite pour > remanier mes fichiers de conf.
> Ma question du moment est quelle différence entre un setq et > defvar pour définir une variable par example dans .emacs pour > se référer à un répertoire ou créer une chaîne ?
> Est-ce que defvar est simplement plus propre car il permet de > documenter la variable ?
Quand tu compiles et que tu utilises setq, il peut se plaindre de ne pas connaître la variable en question. Mais je suppose qu'avec defvar, il peut se plaindre qu'elle existe déjà.
Exact mais je croyais que les devel Emacs avaient entammé un petit travail de chasse aux Warnings pour ces cas là.
Enfin pas grave, de toute façon que tu utilises l'un ou l'autre ne change rien sauf si tu veux faire un M-x set-variable.
Pour une variable existante, le setq s'impose pour définir une autre variable defvar (entre autre) doit être recommandé (plus propre).
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je suppose que ton illustration devait aussi signaler exemple2 ?
A mon avis, il n'y a que les variables dont la documentation est étoilée. -- BOFH excuse #140: LBNC (luser brain not connected)
Pascal Bourguignon
Sébastien Kirche writes:
Le 5 Apr 2005, Pascal Bourguignon vraute :
> setq assigne une variable.
[...]
> defvar crée une variable (et n'assigne la valeur initiale que si la > variable n'existait pas!)
Ok. Mais si la variable n'existe pas au setq, il la crée aussi...
Oui (sauf que le compilateur se plaindra, car il supposera qu'on a fait une faute de frappe dans le nom de la variable, puisqu'on ne l'a pas déclarée...)
> > Est-ce que defvar est simplement plus propre car il permet de documenter > > la variable ? > > Si c'est une variable qui existe déjà, utiliser setq. Si on défini une > nouvelle variable utiliser defvar.
Je vais retenir ce fonctionnement.
> En plus, ça permet d'indiquer quelles variables sont utilisables avec la > commande set-variable: > > (defvar exemple1 1 "*Une variable utilisable dans M-x set-variable ") > (defvar exemple2 2 "Une variable normale.") > (setq exemple3 3) > > M-x set-variable RET exemple TAB TAB
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je suppose que ton illustration devait aussi signaler exemple2 ?
Non, car il n'y a pas d'étoile au début de la documentation de exemple2.
C-h f defvar
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq ma-variable) ) ? La simplicité de l'affectation ?
Justement, de pouvoir sélectionner (et autocompléter) les variables qui sont sensées être modifiées par l'utilisateur.
Une variable déclarée sans l'étoile dans la documentation est prise comme une variable "privée".
Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY.
Sébastien Kirche <sebastien.kirche.no@spam.free.fr.invalid> writes:
Le 5 Apr 2005, Pascal Bourguignon vraute :
> setq assigne une variable.
[...]
> defvar crée une variable (et n'assigne la valeur initiale que si la
> variable n'existait pas!)
Ok. Mais si la variable n'existe pas au setq, il la crée aussi...
Oui (sauf que le compilateur se plaindra, car il supposera qu'on a
fait une faute de frappe dans le nom de la variable, puisqu'on ne l'a
pas déclarée...)
> > Est-ce que defvar est simplement plus propre car il permet de documenter
> > la variable ?
>
> Si c'est une variable qui existe déjà, utiliser setq. Si on défini une
> nouvelle variable utiliser defvar.
Je vais retenir ce fonctionnement.
> En plus, ça permet d'indiquer quelles variables sont utilisables avec la
> commande set-variable:
>
> (defvar exemple1 1 "*Une variable utilisable dans M-x set-variable ")
> (defvar exemple2 2 "Une variable normale.")
> (setq exemple3 3)
>
> M-x set-variable RET exemple TAB TAB
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je
suppose que ton illustration devait aussi signaler exemple2 ?
Non, car il n'y a pas d'étoile au début de la documentation de exemple2.
C-h f defvar
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq
ma-variable) ) ? La simplicité de l'affectation ?
Justement, de pouvoir sélectionner (et autocompléter) les variables
qui sont sensées être modifiées par l'utilisateur.
Une variable déclarée sans l'étoile dans la documentation est prise
comme une variable "privée".
> defvar crée une variable (et n'assigne la valeur initiale que si la > variable n'existait pas!)
Ok. Mais si la variable n'existe pas au setq, il la crée aussi...
Oui (sauf que le compilateur se plaindra, car il supposera qu'on a fait une faute de frappe dans le nom de la variable, puisqu'on ne l'a pas déclarée...)
> > Est-ce que defvar est simplement plus propre car il permet de documenter > > la variable ? > > Si c'est une variable qui existe déjà, utiliser setq. Si on défini une > nouvelle variable utiliser defvar.
Je vais retenir ce fonctionnement.
> En plus, ça permet d'indiquer quelles variables sont utilisables avec la > commande set-variable: > > (defvar exemple1 1 "*Une variable utilisable dans M-x set-variable ") > (defvar exemple2 2 "Une variable normale.") > (setq exemple3 3) > > M-x set-variable RET exemple TAB TAB
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je suppose que ton illustration devait aussi signaler exemple2 ?
Non, car il n'y a pas d'étoile au début de la documentation de exemple2.
C-h f defvar
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq ma-variable) ) ? La simplicité de l'affectation ?
Justement, de pouvoir sélectionner (et autocompléter) les variables qui sont sensées être modifiées par l'utilisateur.
Une variable déclarée sans l'étoile dans la documentation est prise comme une variable "privée".
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je suppose que ton illustration devait aussi signaler exemple2 ?
Non. La différence peut ne pas sauter aux yeux a priori. Il s'agit juste de l'astérisque en plus. Tu peux également essayer :
(defcustom exemple4 4 "Une option utilisateur.")
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq ma-variable) ) ? La simplicité de l'affectation ?
Bof. Peut-être au niveau de la complétion. Je pense qu'il s'agit plutôt de deux approche différentes. Une variable est destinée à être utilisée dans un programme. Une option de l'utilisateur est destinée à être renseignée par les utilisateurs humains directement (dans ~/.emacs ou de manière interactive).
C'est cette différence que fait set-variable.
Pour ma part, je ne me sers jamais de setq pour déclarer une nouvelle variable. Je déclare toute variable que j'utilise. Soit par defvar, lorsqu'il s'agit juste d'une variable sensée être plus ou moins privée, soit par defcustom s'il s'agit d'une option destinée à la configuration.
Il m'arrive bien sûr d'utiliser setq sur des symboles n'ayant pas encore été définis, tout simplement parce que le fichier où cela est fait n'a pas encore été chargé.
Il faut toutefois faire attention à l'emploi de setq sur des customs. defcustom peut en effet spécifier des actions spéciales à entreprendre lors de l'affectation d'un custom. Mais je te renvois pour cela au manuel ELisp.
--drkm
Sébastien Kirche <sebastien.kirche.no@spam.free.fr.invalid> writes:
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je
suppose que ton illustration devait aussi signaler exemple2 ?
Non. La différence peut ne pas sauter aux yeux a priori. Il s'agit
juste de l'astérisque en plus. Tu peux également essayer :
(defcustom exemple4 4 "Une option utilisateur.")
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq
ma-variable) ) ? La simplicité de l'affectation ?
Bof. Peut-être au niveau de la complétion. Je pense qu'il s'agit
plutôt de deux approche différentes. Une variable est destinée à être
utilisée dans un programme. Une option de l'utilisateur est destinée
à être renseignée par les utilisateurs humains directement (dans
~/.emacs ou de manière interactive).
C'est cette différence que fait set-variable.
Pour ma part, je ne me sers jamais de setq pour déclarer une
nouvelle variable. Je déclare toute variable que j'utilise. Soit par
defvar, lorsqu'il s'agit juste d'une variable sensée être plus ou
moins privée, soit par defcustom s'il s'agit d'une option destinée à
la configuration.
Il m'arrive bien sûr d'utiliser setq sur des symboles n'ayant pas
encore été définis, tout simplement parce que le fichier où cela est
fait n'a pas encore été chargé.
Il faut toutefois faire attention à l'emploi de setq sur des
customs. defcustom peut en effet spécifier des actions spéciales à
entreprendre lors de l'affectation d'un custom. Mais je te renvois
pour cela au manuel ELisp.
Bizarrement set-variable ne me propose que exemple1 dans la completion. Je suppose que ton illustration devait aussi signaler exemple2 ?
Non. La différence peut ne pas sauter aux yeux a priori. Il s'agit juste de l'astérisque en plus. Tu peux également essayer :
(defcustom exemple4 4 "Une option utilisateur.")
Quel est l'intérêt/l'usage de M-x set-variable (par rapport à M-: (setq ma-variable) ) ? La simplicité de l'affectation ?
Bof. Peut-être au niveau de la complétion. Je pense qu'il s'agit plutôt de deux approche différentes. Une variable est destinée à être utilisée dans un programme. Une option de l'utilisateur est destinée à être renseignée par les utilisateurs humains directement (dans ~/.emacs ou de manière interactive).
C'est cette différence que fait set-variable.
Pour ma part, je ne me sers jamais de setq pour déclarer une nouvelle variable. Je déclare toute variable que j'utilise. Soit par defvar, lorsqu'il s'agit juste d'une variable sensée être plus ou moins privée, soit par defcustom s'il s'agit d'une option destinée à la configuration.
Il m'arrive bien sûr d'utiliser setq sur des symboles n'ayant pas encore été définis, tout simplement parce que le fichier où cela est fait n'a pas encore été chargé.
Il faut toutefois faire attention à l'emploi de setq sur des customs. defcustom peut en effet spécifier des actions spéciales à entreprendre lors de l'affectation d'un custom. Mais je te renvois pour cela au manuel ELisp.