zsh-users
 help / color / mirror / code / Atom feed
* 2 questions of completion
@ 2012-03-04 14:48 Ranousse
  2012-03-04 19:13 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Ranousse @ 2012-03-04 14:48 UTC (permalink / raw)
  To: zsh-users

1) Say I have an alias such as
alias grep=egrep
Suppose I don't want to use the alias I can use
\grep something

However I noticed that
\gr tab (for completion) deletes the \ at the beginning of the line.
Is there an option or something to avoid this.


2) Still about completion but quite different

With menu select activated, I need to press enter twice to validate a
command so I use
bindkey -M menuselect '^M' .accept-line
and it works.

However I have a similar problem with backspace, and can't find
solution. What can I do to make backspace works (I mean not pressing
this key twice) ?


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

* Re: 2 questions of completion
  2012-03-04 14:48 2 questions of completion Ranousse
@ 2012-03-04 19:13 ` Bart Schaefer
  2012-03-04 22:55   ` Ranousse
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2012-03-04 19:13 UTC (permalink / raw)
  To: zsh-users

On Mar 4,  3:48pm, Ranousse wrote:
}
} \gr tab (for completion) deletes the \ at the beginning of the line.
} Is there an option or something to avoid this.

No, there really isn't.  In order to do its work, completion reduces
the input word to its minimally escaped form; it doesn't know about
escapes that have been added for special effects beyond normal shell
syntax rules.

If you use quotes instead of a backslash, completion keeps those and
even adds the matching end quote for you.

You might be able to write a little wrapper function that looks for
(( CURRENT == 1 )) && [[ $WORDS[CURRENT] == \\* ]] and if so removes
the backslash, does completion, and then puts the backslash back.

} bindkey -M menuselect '^M' .accept-line
} 
} However I have a similar problem with backspace, and can't find
} solution. What can I do to make backspace works (I mean not pressing
} this key twice) ?

You aren't supposed to need anything special for backward-delete-char;
it's handled internally to menuselection.  In this case, however, the
first press of backward-delete-char is deleting the auto-appended space
following the completed word, which is why you seem to have to press
it twice.  You can see this better if you menu-select a directory, and
note that pressing backspace kills the trailing slash.

Assuming that you have both delete (^?) and backspace (^H) bound to
backward-delete-char, a quick workaround for you may be:

    bindkey -M menuselect -s '^H' '^?^?'

which just says that when a backspace is seen, send two deletes.  It
may be necessary to invert that if your keyboard sends ^? instead
of ^H when the key labeled backspace is pressed:

    bindkey -M menuselect -s '^?' '^H^H'

However, DO NOT use BOTH of those bindings -- only one or the other.
Using both will result in recursion as each expands the other.

On the other hand you'll find that for completions that do not auto-
append a space, this is deleting more than you want.  You'll just have
to try it out and see which behavior you find less bothersome.


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

* Re: 2 questions of completion
  2012-03-04 19:13 ` Bart Schaefer
@ 2012-03-04 22:55   ` Ranousse
  2012-03-05  0:28     ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Ranousse @ 2012-03-04 22:55 UTC (permalink / raw)
  To: zsh-users

> If you use quotes instead of a backslash, completion keeps those and
> even adds the matching end quote for you.

Nice to know, I will use this solution.


> You aren't supposed to need anything special for backward-delete-char;
> it's handled internally to menuselection.  In this case, however, the
> first press of backward-delete-char is deleting the auto-appended space
> following the completed word, which is why you seem to have to press
> it twice.  You can see this better if you menu-select a directory, and
> note that pressing backspace kills the trailing slash.
> 
> Assuming that you have both delete (^?) and backspace (^H) bound to
> backward-delete-char, a quick workaround for you may be:
> 
>     bindkey -M menuselect -s '^H' '^?^?'
> 
> which just says that when a backspace is seen, send two deletes.  It
> may be necessary to invert that if your keyboard sends ^? instead
> of ^H when the key labeled backspace is pressed:
> 
>     bindkey -M menuselect -s '^?' '^H^H'
> 
> However, DO NOT use BOTH of those bindings -- only one or the other.
> Using both will result in recursion as each expands the other.
> 
> On the other hand you'll find that for completions that do not auto-
> append a space, this is deleting more than you want.  You'll just have
> to try it out and see which behavior you find less bothersome.

Ok, thank you for the answer. So if I understand right, with the default
behaviour, the first backspace removes the trailing slash in case of
directories, and does nothing if there's no trailing slash. So in
the later case that's why I have to press return twice.


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

* Re: 2 questions of completion
  2012-03-04 22:55   ` Ranousse
@ 2012-03-05  0:28     ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2012-03-05  0:28 UTC (permalink / raw)
  To: zsh-users

On Mar 4, 11:55pm, Ranousse wrote:
}
} > first press of backward-delete-char is deleting the auto-appended space
} > following the completed word, which is why you seem to have to press
} > it twice.  You can see this better if you menu-select a directory, and
} > note that pressing backspace kills the trailing slash.
} 
} Ok, thank you for the answer. So if I understand right, with the default
} behaviour, the first backspace removes the trailing slash in case of
} directories, and does nothing if there's no trailing slash.

Not quite.  If what you are menu-selecting are file names, then there is
always either a trailing slash or a trailing space auto-appended.  You
just can't see the space.

So the first backspace is always removing *something*.  Sometimes it just
removes an invisible thing.


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

end of thread, other threads:[~2012-03-05  0:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-04 14:48 2 questions of completion Ranousse
2012-03-04 19:13 ` Bart Schaefer
2012-03-04 22:55   ` Ranousse
2012-03-05  0:28     ` Bart Schaefer

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

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).