From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Masatake YAMATO Newsgroups: gmane.emacs.devel Subject: Re: Strange problem with latest CVS Date: Wed, 14 Apr 2004 12:13:23 +0900 (JST) Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <20040414.121323.107619969.jet@gyve.org> References: <20040412.131122.179962686.jet@gyve.org> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1081912637 21978 80.91.224.253 (14 Apr 2004 03:17:17 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 14 Apr 2004 03:17:17 +0000 (UTC) Cc: rms@gnu.org, emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Wed Apr 14 05:17:02 2004 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1BData-0008Fl-00 for ; Wed, 14 Apr 2004 05:17:02 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.35 #1 (Debian)) id 1BDatZ-00022O-00 for ; Wed, 14 Apr 2004 05:17:01 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.30) id 1BDar5-0000Bd-Nx for emacs-devel@quimby.gnus.org; Tue, 13 Apr 2004 23:14:27 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.30) id 1BDar0-0000BP-Hi for emacs-devel@gnu.org; Tue, 13 Apr 2004 23:14:22 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.30) id 1BDaqU-0008Jm-KO for emacs-devel@gnu.org; Tue, 13 Apr 2004 23:14:21 -0400 Original-Received: from [210.130.136.40] (helo=r-maa.spacetown.ne.jp) by monty-python.gnu.org with esmtp (Exim 4.30) id 1BDaqT-0008JW-VV; Tue, 13 Apr 2004 23:13:50 -0400 Original-Received: from localhost ([219.120.63.249]) by r-maa.spacetown.ne.jp (8.11.6) with ESMTP id i3E3DkI14678; Wed, 14 Apr 2004 12:13:46 +0900 (JST) Original-To: dak@gnu.org In-Reply-To: X-Mailer: Mew version 4.0.62 on Emacs 21.3.50 / Mule 5.0 (SAKAKI) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:21610 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:21610 > Richard Stallman writes: > > > It seems that (at least) widgets related code doesn't set evaporate to > > their overlays(*). My question was whether I should fix it. > > Now, your answer is obvious. I will fix it. > > > > No! These overlays should not evaporate. > > If they evaporate, the form won't work any more. > > Unless I misunderstand, they will evaporate only when the underlying > buffer content gets deleted to prepare the buffer for insertion of new > contents. The old overlays/buttons are then completely useless to > keep around. > > When they evaporate, they do it at a time when there is no form left > that could be working. Thank you for your explanation. You write what I want to say. However, as RMS wrote, I wondner what I should do when a editable-field becomes empty during the user editing. Try the next code with the attached patch. Delete "Delete me" in *Widget Example* buffer. You will get a signal. (progn (interactive) (switch-to-buffer "*Widget Example*") (kill-all-local-variables) (let ((inhibit-read-only t)) (erase-buffer)) (widget-create 'editable-field "Delete me") (use-local-map widget-keymap) (widget-setup)) cvs diff: warning: unrecognized response `access control disabled, clients can connect from any host' from cvs server Index: lisp/wid-edit.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/wid-edit.el,v retrieving revision 1.124 diff -u -r1.124 wid-edit.el --- lisp/wid-edit.el 4 Jan 2004 15:11:59 -0000 1.124 +++ lisp/wid-edit.el 14 Apr 2004 03:11:19 -0000 @@ -343,7 +343,9 @@ ;; works in the field when, say, Custom uses `suppress-keymap'. (overlay-put overlay 'local-map keymap) (overlay-put overlay 'face face) - (overlay-put overlay 'help-echo help-echo)) + (overlay-put overlay 'help-echo help-echo) + (overlay-put overlay 'evaporate t) + ) (setq to (1- to)) (setq rear-sticky t)) (let ((overlay (make-overlay from to nil nil rear-sticky))) @@ -352,7 +354,9 @@ (overlay-put overlay 'field widget) (overlay-put overlay 'local-map keymap) (overlay-put overlay 'face face) - (overlay-put overlay 'help-echo help-echo))) + (overlay-put overlay 'help-echo help-echo) + (overlay-put overlay 'evaporate t) + )) (widget-specify-secret widget)) (defun widget-specify-secret (field) @@ -382,6 +386,7 @@ (setq help-echo 'widget-mouse-help)) (overlay-put overlay 'button widget) (overlay-put overlay 'keymap (widget-get widget :keymap)) + (overlay-put overlay 'evaporate t) ;; We want to avoid the face with image buttons. (unless (widget-get widget :suppress-face) (overlay-put overlay 'face (widget-apply widget :button-face-get)) @@ -401,6 +406,7 @@ "Specify sample for WIDGET between FROM and TO." (let ((overlay (make-overlay from to nil t nil))) (overlay-put overlay 'face (widget-apply widget :sample-face-get)) + (overlay-put overlay 'evaporate t) (widget-put widget :sample-overlay overlay))) (defun widget-specify-doc (widget from to) @@ -408,6 +414,7 @@ (let ((overlay (make-overlay from to nil t nil))) (overlay-put overlay 'widget-doc widget) (overlay-put overlay 'face widget-documentation-face) + (overlay-put overlay 'evaporate t) (widget-put widget :doc-overlay overlay))) (defmacro widget-specify-insert (&rest form)