unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* comint read-only prompt
@ 2002-08-19  8:24 Marshall, Simon
  2002-08-19 10:59 ` Miles Bader
  2002-08-19 20:46 ` Richard Stallman
  0 siblings, 2 replies; 36+ messages in thread
From: Marshall, Simon @ 2002-08-19  8:24 UTC (permalink / raw)
  Cc: 'jdsmith@as.arizona.edu'

Hi guys, this one is for you...

-----Original Message-----
From: JD Smith [mailto:jdsmith@as.arizona.edu] 
Sent: 09 August 2002 00:30
To: shivers@cs.cmu.edu; simon@gnu.org
Subject: comint read-only prompt




I'm the maintainer of the IDLWAVE programming mode, which uses comint to
run the language IDL interactively (see idlw-shell.el if you're
interested).  Without comint, programming the shell would have been far
more cumbersome.   

One missing feature of comint that I'd always pined for was the ability
to make the most recent prompt (IDL> in my case) read-only.  Right now,
the delete key just runs right over it.  As I looked into it further, I
realized the problem was that an overlay is (usually) used to highlight
this prompt, and that overlays (for whatever reason) do not honor the
'read-only property, as text properties do.  I had hoped Emacs 21 would
address this shortcoming, but it did not.

However, I learned by example in cpp-mode (cpp.el), the overlay
properties `modification-hooks' and `insert-in-front-hooks' can be used
to effect a read-only equivalency, by signaling an error if the user
attempts to modify or pre-pend text in the overlay.

I tried this out on the comint.el which shipped with Emacs 21.2.1, and
it works marvelously.  I used 'intangible in addition so left arrow
would skip right over the prompt (and C-a, etc., would stop before the
prompt).  Would you guys be interested in this type of functionality? 
If so, I could redo the mods against CVS comint, and send them your way
for a look (the major relevant change between 21.2.1 and CVS is in
comint-snapshot-last-prompt, where I need to remove hooks to prevent
older prompts from being read-only, in case you want to delete them). 
Otherwise, I might implement them as advice from within idlw-shell, but
I'd prefer the more robust solution.

Thanks,

JD

-- 
 J.D. Smith            <=> 
 Steward Observatory   <=> 520-621-9532 <W>
 University of Arizona <=> 520-621-1532 <F>
 Tucson, Arizona 85721 <=> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19  8:24 comint read-only prompt Marshall, Simon
@ 2002-08-19 10:59 ` Miles Bader
  2002-08-19 15:40   ` Stefan Monnier
  2002-08-19 20:46 ` Richard Stallman
  1 sibling, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-19 10:59 UTC (permalink / raw)
  Cc: 'Emacs Developers', 'jdsmith@as.arizona.edu'

"Marshall, Simon" <simon.marshall@misys.com> writes:
> One missing feature of comint that I'd always pined for was the ability
> to make the most recent prompt (IDL> in my case) read-only.
>
>  Would you guys be interested in this type of functionality? 

Yup.  I was planning to do something like this, but forgot about it.

It's a shame that `read-only' on an overlay doesn't work, though; that
would have made a very nice tidy solution.

-Miles
-- 
Occam's razor split hairs so well, I bought the whole argument!

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 10:59 ` Miles Bader
@ 2002-08-19 15:40   ` Stefan Monnier
  2002-08-19 15:57     ` JD Smith
  2002-08-19 23:41     ` Miles Bader
  0 siblings, 2 replies; 36+ messages in thread
From: Stefan Monnier @ 2002-08-19 15:40 UTC (permalink / raw)
  Cc: Marshall, Simon, 'Emacs Developers',
	'jdsmith@as.arizona.edu'

> "Marshall, Simon" <simon.marshall@misys.com> writes:
> > One missing feature of comint that I'd always pined for was the ability
> > to make the most recent prompt (IDL> in my case) read-only.
> >
> >  Would you guys be interested in this type of functionality? 
> 
> Yup.  I was planning to do something like this, but forgot about it.
> 
> It's a shame that `read-only' on an overlay doesn't work, though; that
> would have made a very nice tidy solution.

Doesn't the latest trunk code of comint use text-properties now ?


	Stefan

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 15:40   ` Stefan Monnier
@ 2002-08-19 15:57     ` JD Smith
  2002-08-19 23:45       ` Miles Bader
  2002-08-20 17:21       ` Richard Stallman
  2002-08-19 23:41     ` Miles Bader
  1 sibling, 2 replies; 36+ messages in thread
From: JD Smith @ 2002-08-19 15:57 UTC (permalink / raw)
  Cc: Miles Bader, Marshall, Simon, 'Emacs Developers'

On Mon, 2002-08-19 at 08:40, Stefan Monnier wrote:
> > "Marshall, Simon" <simon.marshall@misys.com> writes:
> > > One missing feature of comint that I'd always pined for was the ability
> > > to make the most recent prompt (IDL> in my case) read-only.
> > >
> > >  Would you guys be interested in this type of functionality? 
> > 
> > Yup.  I was planning to do something like this, but forgot about it.
> > 
> > It's a shame that `read-only' on an overlay doesn't work, though; that
> > would have made a very nice tidy solution.
> 
> Doesn't the latest trunk code of comint use text-properties now ?

Thanks for the response guys.

I think the trunk version differs from the released version in the way
it "snapshots" older prompts.  Formerly, new overlays were created for
each prompt.  Now, overlay properties are converted to text properties
for old prompts.  Unfortunately, this "snapshotting" occurs all over the
place, even before a new prompt arrives.  One feature I wanted was for
older prompts *not* to be read-only.  Here's the advice I used to get it
to work (not released, just for play):

  (defvar idlwave-shell-save-comint-last-prompt-overlay nil)
  (defun idlwave-shell-comint-signal-read-only (overlay after start end 
                                                        &optional len)
    (if (and (not after)
             (or (< (overlay-start overlay) start)
                 (> (overlay-end overlay) end)))
        (error "")))

  (defadvice comint-output-filter (around swap-read-only activate)
    "Add a read-only equivalency to the last prompt overlay."
    ;; Caution: in Emacs <~21.2, a new overlay gets created for each
    ;; prompt... in later versions, text-properties for old prompts
    ;; are used instead, and the original overlay is recycled.  In
    ;; this case, we can advise snapshot-last-prompt to remove the
    ;; read-only *text properties* (not the overlay properties).
    ;; Here we test to ensure the prompt isn't in the same position as
    ;; the process-mark before removing the read-only overlay stuff.
    (when (and idlwave-shell-save-comint-last-prompt-overlay 
               (not (equal
                     (marker-position (process-mark (get-buffer-process 
                                                     (current-buffer))))
                     (overlay-end 
                      idlwave-shell-save-comint-last-prompt-overlay))))
      (overlay-put idlwave-shell-save-comint-last-prompt-overlay 
                   'modification-hooks nil)
      (overlay-put idlwave-shell-save-comint-last-prompt-overlay 
                   'insert-in-front-hooks' nil))
    ad-do-it
    (when comint-last-prompt-overlay
      (setq idlwave-shell-save-comint-last-prompt-overlay 
            comint-last-prompt-overlay)
      (overlay-put comint-last-prompt-overlay 'intangible t)
      (overlay-put comint-last-prompt-overlay 'modification-hooks 
                   '(idlwave-shell-comint-signal-read-only))
      (overlay-put comint-last-prompt-overlay 'insert-in-front-hooks 
                   '(idlwave-shell-comint-signal-read-only))))
  
  (defadvice comint-snapshot-last-prompt (after remove-text-read-only activate)
    "Remove the read-only text properties potentially set by snapshot"
    (when comint-last-prompt-overlay
      (remove-text-properties 
       (overlay-start comint-last-prompt-overlay)
       (overlay-end comint-last-prompt-overlay)
       '(modification-hooks nil insert-in-front-hooks nil))))

I've attempted to deal with both cases: a new overlay for each prompt,
and the same overlay getting moved, with text properties set in their
stead for older prompts.  Since "snapshotting" can happen at any time
(even before a prompt becomes an old prompt, but is still at the current
process-mark), I found it necessary to save the last prompt, and remove
the "read-only" properties just before the filter.  In any case, you
obviously wouldn't have to support both forms yourself.  

Another option I tried is adding, at the time of overlay move, a
read-only text property (and don't forget rear-nonsticky).  I reasoned
that this is perfectly acceptable given the new use of text properties
in CVS comint.  I didn't like the error message as much.

Let me know if it's unclear.

Thanks,

JD

-- 
 J.D. Smith            <=> 
 Steward Observatory   <=> 520-621-9532 <W>
 University of Arizona <=> 520-621-1532 <F>
 Tucson, Arizona 85721 <=> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19  8:24 comint read-only prompt Marshall, Simon
  2002-08-19 10:59 ` Miles Bader
@ 2002-08-19 20:46 ` Richard Stallman
  2002-08-21  0:23   ` Noah Friedman
  2002-08-21  0:23   ` Noah Friedman
  1 sibling, 2 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-19 20:46 UTC (permalink / raw)
  Cc: emacs-devel, jdsmith

    I tried this out on the comint.el which shipped with Emacs 21.2.1, and
    it works marvelously.  I used 'intangible in addition so left arrow
    would skip right over the prompt (and C-a, etc., would stop before the
    prompt).  Would you guys be interested in this type of functionality? 

It is certainly worth trying out.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 15:40   ` Stefan Monnier
  2002-08-19 15:57     ` JD Smith
@ 2002-08-19 23:41     ` Miles Bader
  1 sibling, 0 replies; 36+ messages in thread
From: Miles Bader @ 2002-08-19 23:41 UTC (permalink / raw)
  Cc: Miles Bader, Marshall, Simon, 'Emacs Developers',
	'jdsmith@as.arizona.edu'

On Mon, Aug 19, 2002 at 11:40:48AM -0400, Stefan Monnier wrote:
> > It's a shame that `read-only' on an overlay doesn't work, though; that
> > would have made a very nice tidy solution.
> 
> Doesn't the latest trunk code of comint use text-properties now ?

Yeah, for everything _except_ the `current' prompt (because it is updated
constantly, it's much easier to keep a single overlay and just change the
position).  I suppose that could be changed to use text-properties too, but I
think it would be more messy.

-Miles
-- 
P.S.  All information contained in the above letter is false,
      for reasons of military security.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 15:57     ` JD Smith
@ 2002-08-19 23:45       ` Miles Bader
  2002-08-20 16:14         ` Stefan Monnier
  2002-08-21  0:11         ` Richard Stallman
  2002-08-20 17:21       ` Richard Stallman
  1 sibling, 2 replies; 36+ messages in thread
From: Miles Bader @ 2002-08-19 23:45 UTC (permalink / raw)
  Cc: Stefan Monnier, Miles Bader, Marshall, Simon,
	'Emacs Developers'

On Mon, Aug 19, 2002 at 08:57:59AM -0700, JD Smith wrote:
> Another option I tried is adding, at the time of overlay move, a
> read-only text property (and don't forget rear-nonsticky).  I reasoned
> that this is perfectly acceptable given the new use of text properties
> in CVS comint.  I didn't like the error message as much.

Given how often this sort of complaint turns up (that a read-only property is
a good solution except for the error message), how about this idea: If a
signalling an error due to a read-only property, if the property's value is a
string, use that as the error message rather than the default.

[I'm guessing this wouldn't cause compatibility problems becuase people
usually don't use a string just to indicate non-nil]

-Miles
-- 
P.S.  All information contained in the above letter is false,
      for reasons of military security.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 23:45       ` Miles Bader
@ 2002-08-20 16:14         ` Stefan Monnier
  2002-08-21  0:12           ` Richard Stallman
  2002-08-21  0:11         ` Richard Stallman
  1 sibling, 1 reply; 36+ messages in thread
From: Stefan Monnier @ 2002-08-20 16:14 UTC (permalink / raw)
  Cc: JD Smith, Stefan Monnier, Miles Bader, Marshall, Simon,
	'Emacs Developers'

> On Mon, Aug 19, 2002 at 08:57:59AM -0700, JD Smith wrote:
> > Another option I tried is adding, at the time of overlay move, a
> > read-only text property (and don't forget rear-nonsticky).  I reasoned
> > that this is perfectly acceptable given the new use of text properties
> > in CVS comint.  I didn't like the error message as much.
> 
> Given how often this sort of complaint turns up (that a read-only property is
> a good solution except for the error message), how about this idea: If a
> signalling an error due to a read-only property, if the property's value is a
> string, use that as the error message rather than the default.

I can only agree given that I've thought about the same thing a few
months back and even did some attempt at coding; see patch below.
The print_error_message needs to be updated as well, but I didn't
go that far.


	Stefan


Index: textprop.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/textprop.c,v
retrieving revision 1.132
diff -u -r1.132 textprop.c
--- textprop.c	16 Jul 2002 17:37:14 -0000	1.132
+++ textprop.c	20 Aug 2002 16:10:19 -0000
@@ -83,9 +83,10 @@
    to capture that error in GDB by putting a breakpoint on it.  */
 
 static void
-text_read_only ()
+text_read_only (propval)
+     Lisp_Object propval;
 {
-  Fsignal (Qtext_read_only, Qnil);
+  Fsignal (Qtext_read_only, STRINGP (propval) ? Fcons (propval, Qnil) : Qnil);
 }
 
 
@@ -2051,7 +2052,7 @@
 		      if (TMEM (Qread_only, tem)
 			  || (NILP (Fplist_get (i->plist, Qread_only))
 			      && TMEM (Qcategory, tem)))
-			text_read_only ();
+			text_read_only (after);
 		    }
 		}
 
@@ -2071,7 +2072,7 @@
 		      if (! TMEM (Qread_only, tem)
 			  && (! NILP (Fplist_get (prev->plist,Qread_only))
 			      || ! TMEM (Qcategory, tem)))
-			text_read_only ();
+			text_read_only (before);
 		    }
 		}
 	    }
@@ -2090,13 +2091,13 @@
 		  if (TMEM (Qread_only, tem)
 		      || (NILP (Fplist_get (i->plist, Qread_only))
 			  && TMEM (Qcategory, tem)))
-		    text_read_only ();
+		    text_read_only (after);
 
 		  tem = textget (prev->plist, Qrear_nonsticky);
 		  if (! TMEM (Qread_only, tem)
 		      && (! NILP (Fplist_get (prev->plist, Qread_only))
 			  || ! TMEM (Qcategory, tem)))
-		    text_read_only ();
+		    text_read_only (after);
 		}
 	    }
 	}
@@ -2118,7 +2119,7 @@
       do
 	{
 	  if (! INTERVAL_WRITABLE_P (i))
-	    text_read_only ();
+	    text_read_only (textget (i->plist, Qread_only));
 
 	  if (!inhibit_modification_hooks)
 	    {

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 15:57     ` JD Smith
  2002-08-19 23:45       ` Miles Bader
@ 2002-08-20 17:21       ` Richard Stallman
  2002-08-20 18:03         ` JD Smith
                           ` (3 more replies)
  1 sibling, 4 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-20 17:21 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, miles, simon.marshall, emacs-devel

      One feature I wanted was for
    older prompts *not* to be read-only.

It seems rather inconsistent to me to make the newest prompt read-only
and not the other prompts.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 17:21       ` Richard Stallman
@ 2002-08-20 18:03         ` JD Smith
  2002-08-20 21:17           ` Miles Bader
  2002-08-20 18:36         ` Luc Teirlinck
                           ` (2 subsequent siblings)
  3 siblings, 1 reply; 36+ messages in thread
From: JD Smith @ 2002-08-20 18:03 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, 2002-08-20 at 10:21, Richard Stallman wrote:
>       One feature I wanted was for
>     older prompts *not* to be read-only.
> 
> It seems rather inconsistent to me to make the newest prompt read-only
> and not the other prompts.
> 

My thinking is this:  one of the major advantages of comint over a
traditional terminal is the ability to edit freely past input and
output.  If, suddenly, certain edit operations on older entries elicited
errors, it might be jarring.  Imagine marking out a region of old
input/output to kill and yank into a journal buffer, only to be met with
"Attempt to modify read-only text". 

One more difference, aside from the error message, between using
modification-hooks + insert-in-front-hooks vs. read-only +
rear-nonsticky pertains to killing regions.  With the former method, the
prompt cannot be modified or prepended to, but can be killed as part of
a larger region.  With the latter method, any attempt to remove the text
is met with an error message.  You'd need to bind inhibit-read-only in
all commands which alter prior text.  So there are three options for old
prompts:

        1. Leave them read-only by virtue of a read-only text-property. 
           Any attempt to kill or delete any part of the entirety of
           older prompts generates an error.
        2. Leave them read-only by virtue of modification and
           insert-in-front-hooks.  Attempts to delete any part of the
           prompts signals an error, but the entire prompt can be killed
           without complaint.
        3. Leave them read-write.

Option 1 is probably the easiest to implement (simply add all
text-properties, including read-only, at the time of overlay move...
eliminating the vestigial overlay and snapshot-last-prompt altogether). 
My preference would be Option 2 or 3.

Thanks,

JD

-- 
 J.D. Smith            <=> 
 Steward Observatory   <=> 520-621-9532 <W>
 University of Arizona <=> 520-621-1532 <F>
 Tucson, Arizona 85721 <=> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 17:21       ` Richard Stallman
  2002-08-20 18:03         ` JD Smith
@ 2002-08-20 18:36         ` Luc Teirlinck
  2002-08-20 21:12         ` Miles Bader
  2002-08-21 11:05         ` Kai Großjohann
  3 siblings, 0 replies; 36+ messages in thread
From: Luc Teirlinck @ 2002-08-20 18:36 UTC (permalink / raw)
  Cc: jdsmith, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

Richard Stallman wrote:

   It seems rather inconsistent to me to make the newest prompt read-only
   and not the other prompts.

JD Smith wrote:

   So there are three options for old prompts:

	   1. Leave them read-only by virtue of a read-only text-property. 
	      Any attempt to kill or delete any part of the entirety of
	      older prompts generates an error.
	   2. Leave them read-only by virtue of modification and
	      insert-in-front-hooks.  Attempts to delete any part of the
	      prompts signals an error, but the entire prompt can be killed
	      without complaint.
	   3. Leave them read-write.


I believe there is one single important reason to make the latest
prompt read-only: it corresponds to the current command line.  This
reason does not apply to old prompts.

I quite often want to edit or "clean up" comint application buffers.
Option 1 forces one to play around with inhibit-read-only to
accomplish this.  Option 1 is currently implemented in ielm.  It is
extremely inconvenient.

I prefer option 3.  Option 2 might work too.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 17:21       ` Richard Stallman
  2002-08-20 18:03         ` JD Smith
  2002-08-20 18:36         ` Luc Teirlinck
@ 2002-08-20 21:12         ` Miles Bader
  2002-08-20 23:23           ` Kim F. Storm
  2002-08-21 11:05         ` Kai Großjohann
  3 siblings, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-20 21:12 UTC (permalink / raw)
  Cc: jdsmith, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, Aug 20, 2002 at 11:21:38AM -0600, Richard Stallman wrote:
>     One feature I wanted was for
>     older prompts *not* to be read-only.
> 
> It seems rather inconsistent to me to make the newest prompt read-only
> and not the other prompts.

It's an inconistency that probably doesn't matter to users.

The `current' prompt is clearly different than others, and far, far, more
likely to be inadvertently modified.  Given the annoyance that read-only past
prompts could cause, and the fact that they are very unlikely to need
protection, I think this split is a good one.

-Miles
-- 
P.S.  All information contained in the above letter is false,
      for reasons of military security.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 18:03         ` JD Smith
@ 2002-08-20 21:17           ` Miles Bader
  2002-08-20 22:01             ` JD Smith
  0 siblings, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-20 21:17 UTC (permalink / raw)
  Cc: rms, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, Aug 20, 2002 at 11:03:04AM -0700, JD Smith wrote:
> Option 1 is probably the easiest to implement (simply add all
> text-properties, including read-only, at the time of overlay move...
> eliminating the vestigial overlay and snapshot-last-prompt altogether). 

You can argue whether the use of an overlay (and snapshot-last-prompt) is the
best solution or not, but it's is _not_ `vestigial', it's quite intentional.

[note that the last prompt can change quite often; you can't simply plop down
text properties and leave them there -- you have to be prepared to remove
them later if what you thought was a prompt turns out not to be]

-Miles
-- 
P.S.  All information contained in the above letter is false,
      for reasons of military security.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 21:17           ` Miles Bader
@ 2002-08-20 22:01             ` JD Smith
  2002-08-21  0:18               ` Miles Bader
  0 siblings, 1 reply; 36+ messages in thread
From: JD Smith @ 2002-08-20 22:01 UTC (permalink / raw)
  Cc: rms, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, 2002-08-20 at 14:17, Miles Bader wrote:
> On Tue, Aug 20, 2002 at 11:03:04AM -0700, JD Smith wrote:
> > Option 1 is probably the easiest to implement (simply add all
> > text-properties, including read-only, at the time of overlay move...
> > eliminating the vestigial overlay and snapshot-last-prompt altogether). 
> 
> You can argue whether the use of an overlay (and snapshot-last-prompt) is the
> best solution or not, but it's is _not_ `vestigial', it's quite intentional.
> 
> [note that the last prompt can change quite often; you can't simply plop down
> text properties and leave them there -- you have to be prepared to remove
> them later if what you thought was a prompt turns out not to be]
> 

Sorry, poor choice of words.  I did notice that snapshot-last-prompt, in
the CVS version, now adds text properties as opposed to "freeing" the
overlay, and that it gets called not just when a new prompt is created,
but *many* times, e.g. every time a command is sent (which occurs in the
background all the time in IDLWAVE).

So, in the present scheme, the current prompt has either
overlay-properties, or redundant overlay+text-properties.  All old
prompts have just text-properties.  In this context, I can't see how
overlays are uniquely needed, since they aren't predictably present by
themselves... but maybe it's just the time between when they are created
or first moved and when they are snapshotted that their presence is
important.  I had assumed you could just "plop down" text properties and
leave them, since that's effectively what happens as soon as snapshot is
called.  

Thanks,

JD

-- 
 J.D. Smith            <=> 
 Steward Observatory   <=> 520-621-9532 <W>
 University of Arizona <=> 520-621-1532 <F>
 Tucson, Arizona 85721 <=> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 21:12         ` Miles Bader
@ 2002-08-20 23:23           ` Kim F. Storm
  0 siblings, 0 replies; 36+ messages in thread
From: Kim F. Storm @ 2002-08-20 23:23 UTC (permalink / raw)
  Cc: Richard Stallman, jdsmith, monnier+gnu/emacs, miles,
	simon.marshall, emacs-devel

Miles Bader <miles@gnu.org> writes:

> On Tue, Aug 20, 2002 at 11:21:38AM -0600, Richard Stallman wrote:
> > It seems rather inconsistent to me to make the newest prompt read-only
> > and not the other prompts.
> 
> Given the annoyance that read-only past
> prompts could cause, and the fact that they are very unlikely to need
> protection, I think this split is a good one.

I agree.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 23:45       ` Miles Bader
  2002-08-20 16:14         ` Stefan Monnier
@ 2002-08-21  0:11         ` Richard Stallman
  1 sibling, 0 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-21  0:11 UTC (permalink / raw)
  Cc: jdsmith, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

    Given how often this sort of complaint turns up (that a read-only property is
    a good solution except for the error message), how about this idea: If a
    signalling an error due to a read-only property, if the property's value is a
    string, use that as the error message rather than the default.

Some such festure seems like a good idea.
The basic handling of error message strings in Emacs is
rather inflexible, so there is no existing feature we
can use to do this.  Doing it with a special-case kludge
might be the best way, since it is easy.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 16:14         ` Stefan Monnier
@ 2002-08-21  0:12           ` Richard Stallman
  2002-08-21 15:06             ` Stefan Monnier
  0 siblings, 1 reply; 36+ messages in thread
From: Richard Stallman @ 2002-08-21  0:12 UTC (permalink / raw)
  Cc: miles, jdsmith, monnier+gnu/emacs, miles, simon.marshall,
	emacs-devel

    I can only agree given that I've thought about the same thing a few
    months back and even did some attempt at coding; see patch below.

This seems reasonable.

    The print_error_message needs to be updated as well, but I didn't
    go that far.

What updating does it need?

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 22:01             ` JD Smith
@ 2002-08-21  0:18               ` Miles Bader
  2002-08-21  1:24                 ` JD Smith
  0 siblings, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-21  0:18 UTC (permalink / raw)
  Cc: rms, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, Aug 20, 2002 at 03:01:32PM -0700, JD Smith wrote:
> Sorry, poor choice of words.  I did notice that snapshot-last-prompt, in
> the CVS version, now adds text properties as opposed to "freeing" the
> overlay, and that it gets called not just when a new prompt is created,
> but *many* times, e.g. every time a command is sent (which occurs in the
> background all the time in IDLWAVE).

I'm confused by what you mean -- that's when snapshot-last-prompt has
_always_ been called, when input is sent (and it's not called at all when `a
new prompt is created').  It should be called exactly the same number of
times now as it was before.

> So, in the present scheme, the current prompt has either
> overlay-properties, or redundant overlay+text-properties.  All old prompts
> have just text-properties.  In this context, I can't see how overlays are
> uniquely needed, since they aren't predictably present by themselves...

That simply isn't true; the _majority_ of the time, in a normal shell
session, the overlay alone is responsible for the last prompt (there may be a
brief instant after you've send a command, and before the process has sent
any output, when they may overlap, but that's harmless).  As the process
sends output after a command, the overlay is moved so that it covers anything
that `looks like a prompt', which may happen many times.  [and
snapshot-last-prompt is never called _at all_]

-Miles
-- 
P.S.  All information contained in the above letter is false,
      for reasons of military security.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 20:46 ` Richard Stallman
@ 2002-08-21  0:23   ` Noah Friedman
  2002-08-21  1:21     ` Miles Bader
  2002-08-21  1:32     ` JD Smith
  2002-08-21  0:23   ` Noah Friedman
  1 sibling, 2 replies; 36+ messages in thread
From: Noah Friedman @ 2002-08-21  0:23 UTC (permalink / raw)
  Cc: simon.marshall, emacs-devel, jdsmith

I fail to understand why you want to mess with read-only properties in
comint buffers at all, especially with regard to the prompt.

There is already a perfectly good method for avoiding accidentally backing
into the prompt while editing, and that is binding C-cC-a to
comint-bol-or-process-mark (which is what it used to be bound to, years
ago), and if you are so inclined you can bind a function to
pre-command-hook to move point past the prompt (or even past the process
mark) if you try to edit a prompt.  But really, if you mess up the prompt,
so what?  In the decade+ that I've been using shell mode, this has never
once been an issue.  But I do find excessive use of read-only properties on
regular text immensely frustrating when I am trying to do something out of
the ordinary.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-19 20:46 ` Richard Stallman
  2002-08-21  0:23   ` Noah Friedman
@ 2002-08-21  0:23   ` Noah Friedman
  1 sibling, 0 replies; 36+ messages in thread
From: Noah Friedman @ 2002-08-21  0:23 UTC (permalink / raw)
  Cc: simon.marshall, emacs-devel, jdsmith

>There is already a perfectly good method for avoiding accidentally backing
>into the prompt while editing, and that is binding C-cC-a to
>comint-bol-or-process-mark (which is what it used to be bound to, years
>ago),

Sorry, I meant binding C-a to comint-bol.  Sometime in the past few years
someone changed it to just be beginning-of-line.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  0:23   ` Noah Friedman
@ 2002-08-21  1:21     ` Miles Bader
  2002-08-21  1:38       ` Miles Bader
  2002-08-21  1:32     ` JD Smith
  1 sibling, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-21  1:21 UTC (permalink / raw)
  Cc: rms, simon.marshall, emacs-devel, jdsmith

Noah Friedman <friedman@splode.com> writes:
> I fail to understand why you want to mess with read-only properties in
> comint buffers at all, especially with regard to the prompt.

I suspect it would be turned off by default.

-Miles
-- 
"I distrust a research person who is always obviously busy on a task."
   --Robert Frosch, VP, GM Research

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  0:18               ` Miles Bader
@ 2002-08-21  1:24                 ` JD Smith
  2002-08-21  1:36                   ` Miles Bader
  0 siblings, 1 reply; 36+ messages in thread
From: JD Smith @ 2002-08-21  1:24 UTC (permalink / raw)
  Cc: rms, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

On Tue, 2002-08-20 at 17:18, Miles Bader wrote:
> On Tue, Aug 20, 2002 at 03:01:32PM -0700, JD Smith wrote:
> > Sorry, poor choice of words.  I did notice that snapshot-last-prompt, in
> > the CVS version, now adds text properties as opposed to "freeing" the
> > overlay, and that it gets called not just when a new prompt is created,
> > but *many* times, e.g. every time a command is sent (which occurs in the
> > background all the time in IDLWAVE).
> 
> I'm confused by what you mean -- that's when snapshot-last-prompt has
> _always_ been called, when input is sent (and it's not called at all when `a
> new prompt is created').  It should be called exactly the same number of
> times now as it was before.

Sorry if I wasn't clear.  This is certainly true.  In the past, however,
snapshot was emptying out an overlay variable and then a new overlay was
being created in the filter.  Now it assigns text properties over the
top of the overlay, in anticipation of the overlay getting moved.

> > So, in the present scheme, the current prompt has either
> > overlay-properties, or redundant overlay+text-properties.  All old prompts
> > have just text-properties.  In this context, I can't see how overlays are
> > uniquely needed, since they aren't predictably present by themselves...
> 
> That simply isn't true; the _majority_ of the time, in a normal shell
> session, the overlay alone is responsible for the last prompt (there may be a
> brief instant after you've send a command, and before the process has sent
> any output, when they may overlap, but that's harmless).  As the process
> sends output after a command, the overlay is moved so that it covers anything
> that `looks like a prompt', which may happen many times.  [and
> snapshot-last-prompt is never called _at all_]
> 

I just realized the source of the confusion; I forgot to mention that
IDLWAVE uses comint in a potentially unusual mode: 

	(set-process-filter process 'idlwave-shell-filter)

In idlwave-shell-filter, output can be *hidden* (i.e. sent to a hidden
buffer, in which case the prompt overlay stays put), otherwise it is
just passed on to comint-output-filter and shows up in the shell buffer
like normal.  However, every time you send a command, whether hidden or
not, the prompt is snapshotted.  The problem is in assuming every
send-input will automatically be followed by a call to the
output-filter.  I'm not familiar with how other modes use comint, but
I'd bet setting your own process-filter (e.g. to send hidden commands)
is not too uncommon.

In any case, the CVS comint's method don't really hurt IDLWAVE: it's
just that you often have both overlay and text properties  on the same
piece of text at the same time (thanks to the zealous snapshotting). 
If, however, read-only properties were added and removed relying on the
"one send-input, one output-filter" assumption, then that could cause
problems.

A proposed solution: if snapshot were moved to the beginning of the
output-filter, these problems would disappear.  Something roughly like:

(defun comint-output-filter (process string)
  ...
  (comint-snapshot-last-prompt)
  ;;fiddle with overlays to ensure the right placement
  ...
  ;; move the overlay
  (move-overlay comint-last-prompt-overlay ...) 
  ...
  ;; or maybe make a new one
  (setq comint-last-prompt-overlay
	(make-overlay prompt-start (point)))
  (overlay-put comint-last-prompt-overlay
	       'font-lock-face 'comint-highlight-prompt)
  ...
  ;; add the read-only text properties
  (add-text-properties (overlay-start comint-last-prompt-overlay)
		       (overlay-end comint-last-prompt-overlay)
		       '(read-only t rear-nonsticky t))

(defun comint-snapshot-last-prompt ()
  (when comint-last-prompt-overlay
    (let ((inhibit-read-only t))
      (add-text-properties (overlay-start comint-last-prompt-overlay)
                           (overlay-end comint-last-prompt-overlay)
                           (nconc
			    (overlay-properties comint-last-prompt-overlay)
			    '(read-only nil))))))


That way, the read-only properties are removed and other text properties
(highlight, etc.) are applied to the soon-to-be-old prompt only just
before text (containing a new prompt, presumably) arrives.  Probably I'm
missing something simple, but it seems to me that would do it.

Thanks,

JD

-- 
 J.D. Smith            <=> 
 Steward Observatory   <=> 520-621-9532 <W>
 University of Arizona <=> 520-621-1532 <F>
 Tucson, Arizona 85721 <=> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  0:23   ` Noah Friedman
  2002-08-21  1:21     ` Miles Bader
@ 2002-08-21  1:32     ` JD Smith
  2002-08-21 15:23       ` Stefan Monnier
  1 sibling, 1 reply; 36+ messages in thread
From: JD Smith @ 2002-08-21  1:32 UTC (permalink / raw)
  Cc: rms, simon.marshall, emacs-devel

On Tue, 2002-08-20 at 17:23, Noah Friedman wrote:
> I fail to understand why you want to mess with read-only properties in
> comint buffers at all, especially with regard to the prompt.
> 

There are two types of people in the world:  ones who use C-a C-k when
they change their mind at a prompt, and ones who wail on the Delete
key.  I'm usually one of the former, and did in fact bind C-a to
comint-bol.  However, I've had many users complain that they can delete
right over the prompt and into the previous line, when they delete with
abandon.  For small (few character) deletes, I'd probably prefer the
delete-with-abandon method myself, but I've trained myself not to use
it.  Anyway, it's a small but noticeable usability deficiency on the
command line compared to a traditional terminal.

JD

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  1:24                 ` JD Smith
@ 2002-08-21  1:36                   ` Miles Bader
  2002-08-21 15:28                     ` Stefan Monnier
  0 siblings, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-21  1:36 UTC (permalink / raw)
  Cc: rms, monnier+gnu/emacs, simon.marshall, emacs-devel

JD Smith <jdsmith@as.arizona.edu> writes:
> The problem is in assuming every send-input will automatically be
> followed by a call to the output-filter.  I'm not familiar with how
> other modes use comint, but I'd bet setting your own process-filter
> (e.g. to send hidden commands) is not too uncommon.

If you don't expect any output following the input you send, you can
call `process-send-string' instead of `comint-send-string'.  That will
avoid the snapshotting.

> A proposed solution: if snapshot were moved to the beginning of the
> output-filter, these problems would disappear.

That would be completely wrong.  The reason why `prompt snapshotting'
is done when the user sends input is because that's the only time you
can be pretty sure that what the overlay covers is _actually_ a prompt.

[Normal shell output contains lots of things that appear to be prompts,
but in fact are not; they are briefly displayed as if they were prompts,
but when more output arrives, the overlay is moved, and so the incorrect
display is removed.]

-Miles
-- 
97% of everything is grunge

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  1:21     ` Miles Bader
@ 2002-08-21  1:38       ` Miles Bader
  0 siblings, 0 replies; 36+ messages in thread
From: Miles Bader @ 2002-08-21  1:38 UTC (permalink / raw)
  Cc: rms, simon.marshall, emacs-devel, jdsmith

p.s.:  You forgot to add `Dag nabit!' to the end of your message.

-miles
-- 
Ich bin ein Virus. Mach' mit und kopiere mich in Deine .signature.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-20 17:21       ` Richard Stallman
                           ` (2 preceding siblings ...)
  2002-08-20 21:12         ` Miles Bader
@ 2002-08-21 11:05         ` Kai Großjohann
  2002-08-22  1:57           ` Richard Stallman
  3 siblings, 1 reply; 36+ messages in thread
From: Kai Großjohann @ 2002-08-21 11:05 UTC (permalink / raw)
  Cc: jdsmith, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>       One feature I wanted was for
>     older prompts *not* to be read-only.
>
> It seems rather inconsistent to me to make the newest prompt read-only
> and not the other prompts.

People might want to trim the *shell* buffer, for example to
eliminate spurious commands.  Then the modified *shell* buffer can be
sent via email to illustrate some point.

kai
-- 
A large number of young women don't trust men with beards.  (BFBS Radio)

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  0:12           ` Richard Stallman
@ 2002-08-21 15:06             ` Stefan Monnier
  0 siblings, 0 replies; 36+ messages in thread
From: Stefan Monnier @ 2002-08-21 15:06 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, miles, jdsmith, miles, simon.marshall,
	emacs-devel

>     I can only agree given that I've thought about the same thing a few
>     months back and even did some attempt at coding; see patch below.
> 
> This seems reasonable.
> 
>     The print_error_message needs to be updated as well, but I didn't
>     go that far.
> 
> What updating does it need?

I can't remember exactly, but I think that as it is, the error message
looks too much like an "internal error" (it uses the usual syntax
used for "uncaught exceptions").


	Stefan

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  1:32     ` JD Smith
@ 2002-08-21 15:23       ` Stefan Monnier
  2002-08-22  1:21         ` Miles Bader
  2002-08-22  7:57         ` Eli Zaretskii
  0 siblings, 2 replies; 36+ messages in thread
From: Stefan Monnier @ 2002-08-21 15:23 UTC (permalink / raw)
  Cc: Noah Friedman, rms, simon.marshall, emacs-devel

> > I fail to understand why you want to mess with read-only properties in
> > comint buffers at all, especially with regard to the prompt.

I don't feel very strongly about it, but I tend to agree with Noah on
this one: read-only properties are often annoying and should be used
*very* sparingly.  It's better to make sure people don't end up erasing
the text by mistake, then let them try to do it and then burp.

> There are two types of people in the world:  ones who use C-a C-k when
> they change their mind at a prompt, and ones who wail on the Delete key.

I don't know about you, but when I do C-a C-k in Emacs-21's *shell*
buffer, I don't end up erasing the prompt.  Maybe you haven't
noticed the `field' property introduced with Emacs-21 because
you have C-a set to comint-bol ?


	Stefan

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21  1:36                   ` Miles Bader
@ 2002-08-21 15:28                     ` Stefan Monnier
  0 siblings, 0 replies; 36+ messages in thread
From: Stefan Monnier @ 2002-08-21 15:28 UTC (permalink / raw)
  Cc: JD Smith, rms, monnier+gnu/emacs, simon.marshall, emacs-devel

> > A proposed solution: if snapshot were moved to the beginning of the
> > output-filter, these problems would disappear.
> 
> That would be completely wrong.  The reason why `prompt snapshotting'
> is done when the user sends input is because that's the only time you
> can be pretty sure that what the overlay covers is _actually_ a prompt.

I think what he was suggesting is:

- comint-send-string sets the overlay's `snapshot' property.
- comint's output filter checks the `snapshot' property to determine
  whether to call comint-snapshot-last-prompt or to just move
  the overlay.

But it seems that it's much simpler to just use process-send-string.
Maybe comint-send-string's docstring could be a bit more forthcoming about
what it means by "extra bookkeeping" so that authors can make a better
informed choice between the two functions.


	Stefan

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21 15:23       ` Stefan Monnier
@ 2002-08-22  1:21         ` Miles Bader
  2002-08-22  7:57         ` Eli Zaretskii
  1 sibling, 0 replies; 36+ messages in thread
From: Miles Bader @ 2002-08-22  1:21 UTC (permalink / raw)
  Cc: JD Smith, Noah Friedman, rms, simon.marshall, emacs-devel

"Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu> writes:
> > There are two types of people in the world:  ones who use C-a C-k when
> > they change their mind at a prompt, and ones who wail on the Delete key.
> 
> I don't know about you, but when I do C-a C-k in Emacs-21's *shell*
> buffer, I don't end up erasing the prompt.

I think his point was that the `wail on the Delete key' people do it
because that's what they're used to, and they're likely to continue
doing so, even if there are `better' methods available.

-Miles
-- 
"1971 pickup truck; will trade for guns"

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21 11:05         ` Kai Großjohann
@ 2002-08-22  1:57           ` Richard Stallman
  2002-08-22  2:21             ` JD Smith
  2002-08-22  2:35             ` Miles Bader
  0 siblings, 2 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-22  1:57 UTC (permalink / raw)
  Cc: jdsmith, monnier+gnu/emacs, miles, simon.marshall, emacs-devel

    > It seems rather inconsistent to me to make the newest prompt read-only
    > and not the other prompts.

    People might want to trim the *shell* buffer, for example to
    eliminate spurious commands.  Then the modified *shell* buffer can be
    sent via email to illustrate some point.

Yes, I agree.  In some cases people might want to edit the last
prompt, too.  Yet there are also cases (as has been said) where they
would tend to do so by mistake and it would be useful to prevent them.

Perhaps instead of trying to distinguish these cases based on which
prompt is being edited, we should try to distinguish between different
commands.  For instance, maybe the case that should get an error
is when point is after the last prompt and you're deleting a region
that runs back into the last prompt.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-22  1:57           ` Richard Stallman
@ 2002-08-22  2:21             ` JD Smith
  2002-08-22  2:35             ` Miles Bader
  1 sibling, 0 replies; 36+ messages in thread
From: JD Smith @ 2002-08-22  2:21 UTC (permalink / raw)
  Cc: Kai.Grossjohann, monnier+gnu/emacs, miles, simon.marshall,
	emacs-devel

On Wed, 2002-08-21 at 18:57, Richard Stallman wrote:
>     > It seems rather inconsistent to me to make the newest prompt read-only
>     > and not the other prompts.
> 
>     People might want to trim the *shell* buffer, for example to
>     eliminate spurious commands.  Then the modified *shell* buffer can be
>     sent via email to illustrate some point.
> 
> Yes, I agree.  In some cases people might want to edit the last
> prompt, too.  Yet there are also cases (as has been said) where they
> would tend to do so by mistake and it would be useful to prevent them.
> 
> Perhaps instead of trying to distinguish these cases based on which
> prompt is being edited, we should try to distinguish between different
> commands.  For instance, maybe the case that should get an error
> is when point is after the last prompt and you're deleting a region
> that runs back into the last prompt.

That sounds very sensible to me.  The modification-hooks +
insert-in-front-hooks method I originally introduced approximates this. 
If you drop insert-in-front, the user could annotate the beginning of
the line with the last prompt, remove the entire prompt without
complaint, but still be prevented from "backing over" it.  He also
couldn't place the point in the middle of the prompt and edit from
there, but I'm not sure how useful that would be anyway.  If I needed to
edit the last prompt in situ (for instance to remove my hostname), I'd
simply hit return to make it no longer the last line, and edit away.  I
could always C-k the empty prompt line at the end.  Since I'm saved from
accidentally erasing the prompt many many more times than I'm slightly
inconvenienced when I intentionally want to edit it, I think it's a good
trade.

This has the advantage of being held in the overlay, and thus
side-stepping the whole snapshotting dilemma (so long as you ensure that
modification-hooks stays an overlay and does not become a
text-property).  I think 'intangible makes sense here too, to avoid
leaving point inside the prompt.  Is there anyone with more experience
with the comint code who'd like to try implementing this?

Thanks,

JD

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-22  1:57           ` Richard Stallman
  2002-08-22  2:21             ` JD Smith
@ 2002-08-22  2:35             ` Miles Bader
  2002-08-24  2:33               ` Richard Stallman
  1 sibling, 1 reply; 36+ messages in thread
From: Miles Bader @ 2002-08-22  2:35 UTC (permalink / raw)
  Cc: Kai.Grossjohann, jdsmith, monnier+gnu/emacs, simon.marshall,
	emacs-devel

Richard Stallman <rms@gnu.org> writes:
> Yes, I agree.  In some cases people might want to edit the last
> prompt, too.  Yet there are also cases (as has been said) where they
> would tend to do so by mistake and it would be useful to prevent them.
> 
> Perhaps instead of trying to distinguish these cases based on which
> prompt is being edited, we should try to distinguish between different
> commands.

If just rebinding DEL to abort when it hits the prompt would be enough,
then that seems like it might be a good idea (and could even be turned
on by default, probably).  But I don't think this particular case
warrants any more effort than that, if making the current prompt
read-only would be simpler.

[People already think of the current prompt as something special (`it's
the current prompt!'), but tend to think of old prompts as simply being
part of the text of the session, not as something special.]

-Miles
-- 
[|nurgle|]  ddt- demonic? so quake will have an evil kinda setting? one that 
            will  make every christian in the world foamm at the mouth? 
[iddt]      nurg, that's the goal 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-21 15:23       ` Stefan Monnier
  2002-08-22  1:21         ` Miles Bader
@ 2002-08-22  7:57         ` Eli Zaretskii
  2002-08-24  2:32           ` Richard Stallman
  1 sibling, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2002-08-22  7:57 UTC (permalink / raw)
  Cc: jdsmith, friedman, simon.marshall, emacs-devel

> From: "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu>
> Date: Wed, 21 Aug 2002 11:23:28 -0400
> 
> I don't feel very strongly about it, but I tend to agree with Noah on
> this one: read-only properties are often annoying and should be used
> *very* sparingly.

Perhaps this should be told in the ELisp manual.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-22  7:57         ` Eli Zaretskii
@ 2002-08-24  2:32           ` Richard Stallman
  0 siblings, 0 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-24  2:32 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, jdsmith, friedman, simon.marshall, emacs-devel

    > I don't feel very strongly about it, but I tend to agree with Noah on
    > this one: read-only properties are often annoying and should be used
    > *very* sparingly.

    Perhaps this should be told in the ELisp manual.

I think so.  But can we make the advice any more specific than just
"very sparingly"?

It seems to me that read-only properties are useful for creating a
structure within which there are editable fields.  For instance,
Custom, and the minibuffer, and maybe forms.el (if it uses them).

Are there any other types of situation where they are useful?

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: comint read-only prompt
  2002-08-22  2:35             ` Miles Bader
@ 2002-08-24  2:33               ` Richard Stallman
  0 siblings, 0 replies; 36+ messages in thread
From: Richard Stallman @ 2002-08-24  2:33 UTC (permalink / raw)
  Cc: Kai.Grossjohann, jdsmith, monnier+gnu/emacs, simon.marshall,
	emacs-devel

    If just rebinding DEL to abort when it hits the prompt would be enough,
    then that seems like it might be a good idea (and could even be turned
    on by default, probably).

That too might be a good solution.

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2002-08-24  2:33 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-19  8:24 comint read-only prompt Marshall, Simon
2002-08-19 10:59 ` Miles Bader
2002-08-19 15:40   ` Stefan Monnier
2002-08-19 15:57     ` JD Smith
2002-08-19 23:45       ` Miles Bader
2002-08-20 16:14         ` Stefan Monnier
2002-08-21  0:12           ` Richard Stallman
2002-08-21 15:06             ` Stefan Monnier
2002-08-21  0:11         ` Richard Stallman
2002-08-20 17:21       ` Richard Stallman
2002-08-20 18:03         ` JD Smith
2002-08-20 21:17           ` Miles Bader
2002-08-20 22:01             ` JD Smith
2002-08-21  0:18               ` Miles Bader
2002-08-21  1:24                 ` JD Smith
2002-08-21  1:36                   ` Miles Bader
2002-08-21 15:28                     ` Stefan Monnier
2002-08-20 18:36         ` Luc Teirlinck
2002-08-20 21:12         ` Miles Bader
2002-08-20 23:23           ` Kim F. Storm
2002-08-21 11:05         ` Kai Großjohann
2002-08-22  1:57           ` Richard Stallman
2002-08-22  2:21             ` JD Smith
2002-08-22  2:35             ` Miles Bader
2002-08-24  2:33               ` Richard Stallman
2002-08-19 23:41     ` Miles Bader
2002-08-19 20:46 ` Richard Stallman
2002-08-21  0:23   ` Noah Friedman
2002-08-21  1:21     ` Miles Bader
2002-08-21  1:38       ` Miles Bader
2002-08-21  1:32     ` JD Smith
2002-08-21 15:23       ` Stefan Monnier
2002-08-22  1:21         ` Miles Bader
2002-08-22  7:57         ` Eli Zaretskii
2002-08-24  2:32           ` Richard Stallman
2002-08-21  0:23   ` Noah Friedman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).