🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fr.comp.applications.emacs
10 messages
10 total messages Started by Gilles Pion Fri, 12 Apr 2013 10:21
comment savoir a quel moment une variable est chang�e ?
#162
Author: Gilles Pion
Date: Fri, 12 Apr 2013 10:21
35 lines
2376 bytes
Bonjour � tous,

m'arrive un truc �trange,


� La fin de l'initialisation de ma session emacs, la contenu de la variable
"ange-ftp-ftp-program-name" se retrouve avoir pour valeur "lftp" alors que je
souhaite lui conserver la valeur par d�faut, "ftp", que j'observe en "mode sans
�chec" ("emacs -Q")

Pour en avoir le coeur net j'ai ajout� en d�but de mon .emacs:

(defconst ange-ftp-ftp-program-name "ftp")
(message "[1] ange-ftp-ftp-program-name is \"%s\" " ange-ftp-ftp-program-name)

et a la fin

(message "[2] ange-ftp-ftp-program-name is \"%s\" " ange-ftp-ftp-program-name)


et voici le r�sultat:

[1] ange-ftp-ftp-program-name is "ftp" 
Loading ...
/../
[2] ange-ftp-ftp-program-name is "lftp" 

Comment est-il possinle d'une valeur constante soit modifi� a l'insu de mon
plein gres?
Comment savoir ou cela se passe?
Comment l'emp�cher?

Merci d'avance!
-- 
Gilles Pion
Re: comment savoir a quel moment une variable est chang�e ?
#163
Author: Gilles Pion
Date: Fri, 12 Apr 2013 10:33
19 lines
2012 bytes
Ref: <ahnfm852dlfl5g4mvqicqmqth2vaqhf4nf@4ax.com> de Gilles Pion
>Comment est-il possible d'une valeur constante soit modifi� a l'insu de mon
>plein gres?
>Comment savoir ou cela se passe?
>Comment l'emp�cher?
>


Bon, laissez tomber, j'ai trouv�: c'�tait des restes d'un vieux test au fin fond
d'un .el lu indirectement par mon .emacs:

(setq  ange-ftp-ftp-program-name "lftp")

Par contre, je reste quand m�me �tonn� qu'un setq d'une constante ne fasse pas
tilter le moteur elisp.


-- 
Gilles Pion
Re: comment savoir a quel moment une variable est changée ?
#164
Author: Damien Wyart
Date: Fri, 12 Apr 2013 12:16
9 lines
1840 bytes
* Gilles Pion <nosuchuser@nosuchdomain.com> in fr.comp.applications.emacs:
> Par contre, je reste quand m�me �tonn� qu'un setq d'une constante ne
> fasse pas tilter le moteur elisp.

defconst n'a qu'une valeur indicative :
http://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Variables.html

-- 
DW
Re: comment savoir a quel moment une variable est chang�e ?
#165
Author: Gilles Pion
Date: Fri, 12 Apr 2013 16:21
9 lines
1876 bytes
Ref: <5167fb37$0$1834$426a74cc@news.free.fr> de Damien Wyart
>defconst n'a qu'une valeur indicative :
>http://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Variables.html

En effet, je constate apr�s lecture.

Pas d'alternative pour rendre une variable r�ellement "readonly" alors?
-- 
Gilles Pion
Re: comment savoir a quel moment une variable est changée ?
#166
Author: Damien Wyart
Date: Fri, 12 Apr 2013 18:48
11 lines
2072 bytes
* Gilles Pion <nosuchuser@nosuchdomain.com>
  in fr.comp.applications.emacs:
> Pas d'alternative pour rendre une variable r�ellement "readonly" alors?

A ma connaissance, non, mais je ne suis pas de tr�s pr�s tout ce qui se
passe c�t� d�veloppement du coeur d'Emacs. Il y avait eu une courte
discussion en 2004, qui n'avait rien donn� :
http://lists.gnu.org/archive/html/emacs-devel/2004-11/msg00561.html

-- 
DW
Re: comment savoir a quel moment une variable est chang�e ?
#167
Author: Gilles Pion
Date: Fri, 12 Apr 2013 19:59
8 lines
1945 bytes
Ref: <516856e7$0$2230$426a74cc@news.free.fr> de Damien Wyart
>Il y avait eu une courte
>discussion en 2004, qui n'avait rien donn� :
>http://lists.gnu.org/archive/html/emacs-devel/2004-11/msg00561.html

merci pour le lien en tout cas
-- 
Gilles Pion
Re: comment savoir a quel moment une variable est chang�e ?
#168
Author: Vincent Bela�che
Date: Tue, 16 Apr 2013 04:32
15 lines
2442 bytes
Gilles Pion <nosuchuser@nosuchdomain.com> writes:

> Ref: <516856e7$0$2230$426a74cc@news.free.fr> de Damien Wyart
>>Il y avait eu une courte
>>discussion en 2004, qui n'avait rien donn� :
>>http://lists.gnu.org/archive/html/emacs-devel/2004-11/msg00561.html
>
> merci pour le lien en tout cas

Sinon pour trouver quand la variable est configur�e, tu pourrais faire
un paquetage qui red�finit la fonction set pour ouvrir le d�bogueur quand
c'est le symbole de la variable probl�matique et charger ce paquetage en
ligne de commande juste avant le fichier d'init.

   Vincent.
Re: comment savoir a quel moment une variable est chang�e ?
#169
Author: Gilles Pion
Date: Tue, 16 Apr 2013 18:17
15 lines
2455 bytes
Ref: <80ehebw0w5.fsf@gmail.com> de Vincent Bela�che

>
>Sinon pour trouver quand la variable est configur�e, tu pourrais faire
>un paquetage qui red�finit la fonction set pour ouvrir le d�bogueur quand
>c'est le symbole de la variable probl�matique et charger ce paquetage en
>ligne de commande juste avant le fichier d'init.

Je vois a peu pr�s le principe, bien que je ne connaisse pas le concept de
"paquetage"

Par contre, je me demande comment, � l'int�rieur de ma fonction "set", invoquer
la vraie fonction "set" ensuite sans partir en boucle infinie?
-- 
Gilles Pion
Re: comment savoir a quel moment une variable est changée ?
#170
Author: duthen.cnv
Date: Thu, 18 Apr 2013 12:25
21 lines
2451 bytes
Le mardi 16 avril 2013 20:17:29 UTC+2, Gilles Pion a écrit :
> de Vincent Belaïche
> Par contre, je me demande comment, à l'intérieur de ma fonction "set",
> 
> invoquer la vraie fonction "set" ensuite sans partir en boucle infinie?

Regarde la fonction 'defadvice' (qui est une macro d'ailleurs).

Sinon, tu peux "patche"r une fonction à la mano de la manière suivante:
(le 'unless' permet d'être sûr de ne l'exécuter qu'une fois
 et d'avoir la vraie définition originelle!
 (attention d'utiliser un nom unique, et le même aux 3 endroits!
  (et de ne pas changer de nom en cours de développement!)))

(unless (fboundp 'jd-orig-set)
  (fset 'jd-orig-set (symbol-function 'set)))

(defun set (var val)
  (if (eq var 'toto) (backtrace))
  (jd-orig-set var val))
Re: comment savoir a quel moment une variable est chang�e ?
#171
Author: Gilles Pion
Date: Thu, 18 Apr 2013 21:50
21 lines
2266 bytes
Ref: <f5e4ac1c-b5c3-45f3-bdfc-2129de036e99@googlegroups.com> de
duthen.cnv@gmail.com

>
>Sinon, tu peux "patche"r une fonction � la mano de la mani�re suivante:
>(le 'unless' permet d'�tre s�r de ne l'ex�cuter qu'une fois
> et d'avoir la vraie d�finition originelle!
> (attention d'utiliser un nom unique, et le m�me aux 3 endroits!
>  (et de ne pas changer de nom en cours de d�veloppement!)))
>
>(unless (fboundp 'jd-orig-set)
>  (fset 'jd-orig-set (symbol-function 'set)))
>
>(defun set (var val)
>  (if (eq var 'toto) (backtrace))
>  (jd-orig-set var val))


merci pour l'exemple, je le copie illico dans "knowledge base" perso.
-- 
Gilles Pion
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads