The good news is that Gmail again works with SourceForge!

On 8/31/06, Axel Liljencrantz <[EMAIL PROTECTED]> wrote:
> On 8/31/06, Philip Ganchev <[EMAIL PROTECTED]> wrote:
> > On 8/30/06, Axel Liljencrantz <[EMAIL PROTECTED]> wrote:
> >  > On 8/27/06, Martin Bähr <[EMAIL PROTECTED]> wrote:
> > > > On Sun, Aug 27, 2006 at 05:36:21PM +0200, Axel Liljencrantz wrote:
> > [rearranged]
> >
> > > Move left/right until we encounter a non-whitespace character.
> > > Move left/right until we encounter a non-alphanumeric character.
> > > If the character we stopped on is non-whitespace, move along one more 
> > > character.
> > >
> > > I've played around with it and it seems to do what I want most of the
> > > time. The actual rule may be a bit complicated, but the behaviour
> > > seems to be what you would expect.
[...]
> The rule is complicated. My hope is that what the rule does is often
> what you want, and that you won't realise that the underlying rule is
> complicated because it's reslt is intuitive. Kind of like how
> universal variables work.

Having used this for a whie, I can say it is unintuitive to me.
First, a boundary character, such as the slash between directory names
in a path, is deleted.  I expect it to stay.  I think this is how many
other programs work, for example Emacs, Vi and other editors, even (I
think) text areas in Microsoft Internet Explorer.

Second, I would argue it's more useful if it stays.  I usually want to
delete the word up to the boundary char, but keep the boundary char.
Examples are:
/usr/share  -> /usr/local/share
.fish_inputrc ->  .fish_history
hello.zip -> hello.jar
apt-get -> apt-cache

I can delete it more easily than typing it, especially since my
fingers are already positioned for deleting.  It is true that
sometimes you can use competion to recreate the character, but not
always.  Because you can't depend on it, you either habituate to
always re-type the character anyway, or have to stop thinking about
what you are doing, to decide whether you can use completion.

Third, it feels inconsistent.  It deletes the boundary char between
two alphanumeric words (slash between two alphanumeric directoy
names), but not if the slash is followed by anything other than an
alpha-numeric char.  I realize it follows the rules you said, but in
practice it always surprises me.  I expect the boundary characters to
be treated the same way in both cases.


On Aug 27, 2006, Axel Liljencranz wrote:
> A simpler rule, that will most of the time do what you propose would be
> to only lump together a series of _identical_ boundary token. E.g. '
>  ' is a single boundary, but ' ~.     ./' is 6 boundaries.

I find this a much more intuitive and useful behavior for "delete-word".

The other one is "delete consecutive characters that belong to the
same set", where each character is in one of three sets: alphanumeric,
whitespace, or boundary.  This is how Vi works.

Emacs and Bash work somewhat opposite of Fish.  All chars up to an
alphanumeric char, then up to a non-alphanumeric char, are deleted.


> > > Actually, I tried my version, and it didn't work. There where troubles
> > > with tokens consisting completely of separateors. So the new rule for
> > > move_word and kill_word is:
> >
> > Sorry, what were the troubles -- that you had to press Ctrl+W many
> > times to delete many consecuitve separators?  With the new rule you
> > would still have to press Ctrl+W many times, only one time less than
> > with the simpler rule.  What is the rationale for making the first
> > encountered separator more special than other separators?
> >
>
> The basic problem is that when a word ends with a a boundary
> character, then ^W will only delete the whitespce after the word and
> nothing of the word itself, which is hardly what the name implies, nor
> is it very useful.
[...]
> Still has the problem that hittin ^W on 'foo   ' will only delete
> whitespace. No word is deleted by any reasonable definition.

Again, I think it is useful because it is what is needed most of the
time, and is exactly what I expect. If you want to remove the whole
word, hit C-W again.  That the "word" is not removed is a pedantic
point.  I don't think that to remove "/bar" from "foo/bar" is to
remove a word, either.  "bar" is the word, and somehow you have to
remove things that are not a word.  Whether you remove them with the
word separately, you are never removing words.  What is important is
to make the behavior predictable and convenient.  Currently it is
neither.  I find that very often I want to remove the word without the
delimiter.   The behavior you proposed would be both, I think, for the
reasons I explained.

This may sound like a trivial thing to fuss about, but I currently
feel quite unsettled deleting words. So I hope you will at least
consider it again.

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users

Reply via email to