emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: comint-carriage-motion, and option nomenclature


From: Noah Friedman
Subject: Re: comint-carriage-motion, and option nomenclature
Date: Tue, 27 Aug 2002 22:34:37 -0700 (PDT)

>I couldn't actually manage to reproduce the problem experimentally,
>but I think you're right about the solution, so I changed it.

Thanks.  On the other hand I could not find a case where I *couldn't*
reproduce the problem or I would have suggested a specific test case.  But
I'm glad the change makes sense anyway.

>Second, I think you're wrong about `enable-' vs. `inhibit-'.  There's a
>tension between naming options to always refer to a "positive" action,
>and naming options such that they refer to a change from the "normal"
>situation.

I agree that there may seem to be a psychologically preferable direction in
some cases, but I'm not convinced that that's a compelling rationale
anymore.

    * Your intuition may not match the user's.  My limited experience with
      usability experiments to date seem to suggest that the programmer is
      practically the least qualified individual to make usability
      decisions because they may be inclined to regard their own
      idiosyncrasies as natural and obvious, even if they're not.

    * What's going to happen if you decide later that the default should
      change?  Then the "normal" situation will be reversed; does this mean
      that the variable should be renamed, or will you introduce an
      inconsistency in the convention of ``nomenclature matches "normal"
      behavior''?

The advantage to picking a convention here is that both of these scenarios
are largely irrelevant--or at least in the case of making a poor usability
decision, the default can be reversed later without changing the names of
documented options and creating a flag day for preferences.

Of course, as you said we may just agree to disagree on this point.


As for comint-inhibit-carriage-motion, I looked again and see that you
didn't mark this as a user option, but I can immediately think of two
reasons why I might have had to touch that variable as a user.

The first is that I wrote a minor mode with which it interferes, because it
tries to do the same thing (using more conservative pattern matching
against specific programs that are known to overwrite themselves).  I'm not
sure if my minor mode should toggle your variable because that might
interfere with the major mode settings; so this might be a "programmer"
issue rather than a user one.  But for now I've been treating it as a user
variable.  And actually, I like your solution well enough that I think I
may abandon my minor mode anyway.

But the second reason is that there are badly-behaved programs out there.
For example, the `format' floppy disk formatter program typically found on
gnu/linux systems outputs a carriage return at the end of each output
sequence, instead of at the beginning.  So on a real terminal, the cursor
is always at the beginning of the line with status text appearing after it.
But in shell mode, I think comint-carriage-motion will just eat all the
output and you'll get no feedback at all.  So there may be specific cases
where you want to toggle that variable temporarily.  This was actually my
reason for using an program-output pattern matching filter in the first
place.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]