From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "Stefan Monnier" Newsgroups: gmane.emacs.devel Subject: Re: Custom dependencies Date: Fri, 04 Apr 2003 15:33:58 -0500 Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <200304042033.h34KXwoB008300@rum.cs.yale.edu> References: <8465pvpnhy.fsf@lucy.is.informatik.uni-duisburg.de> <200304041519.h34FJa9n007445@rum.cs.yale.edu> <84a3e0qv3x.fsf@lucy.is.informatik.uni-duisburg.de> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: main.gmane.org 1049488463 19204 80.91.224.249 (4 Apr 2003 20:34:23 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Fri, 4 Apr 2003 20:34:23 +0000 (UTC) Cc: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Fri Apr 04 22:34:22 2003 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 191XtG-0004zW-00 for ; Fri, 04 Apr 2003 22:34:22 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 191XvT-000546-00 for ; Fri, 04 Apr 2003 22:36:39 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 191XtN-00005I-02 for emacs-devel@quimby.gnus.org; Fri, 04 Apr 2003 15:34:29 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10.13) id 191Xsx-0008Jj-00 for emacs-devel@gnu.org; Fri, 04 Apr 2003 15:34:03 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13) id 191Xsv-0008G7-00 for emacs-devel@gnu.org; Fri, 04 Apr 2003 15:34:02 -0500 Original-Received: from rum.cs.yale.edu ([128.36.229.169]) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.10.13) id 191Xsu-0008Ez-00 for emacs-devel@gnu.org; Fri, 04 Apr 2003 15:34:00 -0500 Original-Received: from rum.cs.yale.edu (localhost [127.0.0.1]) by rum.cs.yale.edu (8.12.8/8.12.8) with ESMTP id h34KXwx6008302; Fri, 4 Apr 2003 15:33:58 -0500 Original-Received: (from monnier@localhost) by rum.cs.yale.edu (8.12.8/8.12.8/Submit) id h34KXwoB008300; Fri, 4 Apr 2003 15:33:58 -0500 X-Mailer: exmh version 2.4 06/23/2000 with nmh-1.0.4 Original-To: kai.grossjohann@gmx.net (Kai =?iso-8859-1?q?Gro=DFjohann?=) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1b5 Precedence: list List-Id: Emacs development discussions. List-Help: List-Post: List-Subscribe: , List-Archive: List-Unsubscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:12903 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:12903 > > - The case as above where variable A has a non-trivial :set function > > which depends on variable B, so that when B is changed something > > should be done to A. > > It seems that the :set-after thingy is a good way to specify the > > dependency, but it doesn't describe what should be done to A > > when B changes. > > Agreed. > > > Kai suggests turn A off and back on, but you seem object to it. > > No, I suggest to turn utf-translate-cjk-mode off then back on. Huh? A is utf-translate-cjk-mode, so I don't understand what's the difference between what I say and what you say. > > I believe that you object only to set-language-environment doing it, > > not to the off&on thing: it should be done by custom without > > set-language-environment (or current-language-environment for that > > matter) knowing anything about utf-translate-cjk-mode. > > I disagree about this. > > Suppose somebody turns on utf-translate-cjk-mode (via custom or > Lisp), then time passes, then they do M-x set-language-environment RET. > At that time, something special needs to happen. It depends on whether you want the dependency to be handled in elisp or only in custom. As someone who only uses elisp to configure my Emacs, I wouldn't mind if the dependency handling only worked in custom (as long as the docstrings make it clear enough for me to DTRT in elisp if I care to). > utf-translate-cjk-mode could add stuff to a > language-environment-changed-hook, then set-language-environment > could call that hook. This is still a specific solution, not a > general one. > > [[ Later on: Oh, I see that there is such a thing! It seems to be > called set-language-environment-hook. Well. That seems to be the > solution, doesn't it? ]] That sounds good in the present case, but the discussion is about the general case. Of course, maybe we don't need to handle the general case because it's too infrequent ? > > Still, how should custom know that turning the thing off&on is the > > right way to refresh A's setting after B was changed ? > > It can't. Unless we tell it. And the code will depend on the > combination of A and B, there will be no general function that will > do the right thing. (Except, perhaps, run-hooks -- but that's > cheating :-) Maybe we can simply say that custom will call the :set function again and it's the :set function to make sure that it will refresh things as needed. > > - The case where A is set to "the value of E" where E is a sexp > > that refers to B. In such a case, the dependency is not part of > > A but of A's current setting, so :set-after is not a good solution. > > I don't know how custom could find out (or be told about) such > > dependencies. OTOH, "what to do when B changes" is trivial to answer > > this time. > > You mean that you could set next-screen-context-lines to `ten percent > of the window height'? That doesn't make sense: it needs to be Custom currently allows such things. Obviously, it can't work right unless B is some sort of global variable. Stefan