Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notebook: tab completion should close on "(" #1080

Closed
stefanv opened this issue Dec 1, 2011 · 2 comments · Fixed by #1108
Closed

Notebook: tab completion should close on "(" #1080

stefanv opened this issue Dec 1, 2011 · 2 comments · Fixed by #1108
Milestone

Comments

@stefanv
Copy link
Contributor

stefanv commented Dec 1, 2011

When typing the following in the notebook:

np.si<TAB>n(

I expect to see: a list of np.si* completions, then limit those selections to np.sin, and then--as soon as I type the bracket--that bracket should appear on the prompt so that I have np.sin(. This doesn't currently happen.

@Carreau, do you know a quick fix?

@Carreau
Copy link
Member

Carreau commented Dec 1, 2011

Le 1 déc. 2011 à 09:19, Stefan van der Walt a écrit :

When typing the following in the notebook:

np.si<TAB>n(

I expect to see: a list of np.si* completions, then limit those selections to np.sin, and then--as soon as I type the bracket--that bracket should appear on the prompt so that I have np.sin(. This doesn't currently happen.

@Carreau, do you know a quick fix?

Hum, I think I understand why, I will try to have a fix soon
If I'm right it should do the same for anything which is not a letter or an underscore like for example with the right custom variable defined at run time:
to type v.xcoor<tab>d+v.ycoord you might have to type + twice, same for -,/...


Reply to this email directly or view it on GitHub:
#1080

@Carreau
Copy link
Member

Carreau commented Dec 1, 2011

fix on its way... here is a list of test that should work (FF and chrome mainly)

#test direct one completion
plt.an<tab>  --> plt.annotate
====
#test filter,tab, only one completion
plt.a<tab>n<tab>  --> plt.annotate
===
# test partial common beggining
plt.a<tab>nn<backspace><backspace>u<tab> -> completer to aut
........................................<tab><tab><tab>
# test dismmised if user erase
.......................................................<backspace><backspace<backspace> -> complter cancelled
===
plt.s<tab>c -> completer 3 choices
...........u -> dismissed whith what user have typed. ( plt.scu)
===
# opt-in list of caracters +-/\()[].
np<tab>.s    -> a 'dot' sould dismiss the completer and be appended
..............<tab>in(  -> np.sin(
np.s<tab>in[  -> np.sin[

I never thought i'll came across so much edge case depending on the browser... do you see any more caracer beside +-/\()[]. that might be usefull to add to the list ?
I preferd an opt-in approche to avoid previous bug of pasting unknown caracters that might make the bug harder to track.

Carreau added a commit to Carreau/ipython that referenced this issue Dec 1, 2011
	- dissmiss the completer, append what alredy type, **Plus** one caracter in
	  some cases

	  List of special caracter that are handle are in a given list `()[]./\-+`
	  for the moment. usefull for exaple when typing :
	  >>> np.s<tab>in(
	  and not having to type '(' twice.

	  they are handle separately has the [a-zA-Z] ones because otherwise they
	  will screw up the regexp, and are opt-in to avoid bugs with invisible
	  caracters send because some browser have 'keypress' event for meta keys

	  close ipython#1080

		Note to this commit :
	  list of test for the completer across browser with --pylab=inline flag

	  #test direct one completion
	  plt.an<tab>       -> plt.annotate

	  #test filter,tab, only one completion
	  plt.a<tab>n<tab>  -> plt.annotate

	  # test partial common beggining
	  # test dismmised if user erase
	  plt.a<tab>nn<backspace><backspace>u<tab>                -> completer to `aut`
	  ........................................<tab><tab><tab> -> nothing should append
	  .......................................................<backspace><backspace<backspace> -> completer cancelled

	  #test dismiss if no more completion
	  plt.s<tab>c  -> completer 3 choices
	  ...........u -> dismissed whith what user have typed.  `plt.scu`

	  # test dismiss in no completion, special symbol
	  # opt-in list of caracters +-/\()[].
	  np<tab>.s          -> a 'dot' sould dismiss the completer and be appended
	  .........<tab>in(  -> np.sin(
	  np.s<tab>in[       -> np.sin[
@fperez fperez closed this as completed in c630b34 Dec 7, 2011
@fperez fperez closed this as completed in 964bfe4 Dec 7, 2011
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
	- dissmiss the completer, append what alredy type, **Plus** one caracter in
	  some cases

	  List of special caracter that are handle are in a given list `()[]./\-+`
	  for the moment. usefull for exaple when typing :
	  >>> np.s<tab>in(
	  and not having to type '(' twice.

	  they are handle separately has the [a-zA-Z] ones because otherwise they
	  will screw up the regexp, and are opt-in to avoid bugs with invisible
	  caracters send because some browser have 'keypress' event for meta keys

	  close ipython#1080

		Note to this commit :
	  list of test for the completer across browser with --pylab=inline flag

	  #test direct one completion
	  plt.an<tab>       -> plt.annotate

	  #test filter,tab, only one completion
	  plt.a<tab>n<tab>  -> plt.annotate

	  # test partial common beggining
	  # test dismmised if user erase
	  plt.a<tab>nn<backspace><backspace>u<tab>                -> completer to `aut`
	  ........................................<tab><tab><tab> -> nothing should append
	  .......................................................<backspace><backspace<backspace> -> completer cancelled

	  #test dismiss if no more completion
	  plt.s<tab>c  -> completer 3 choices
	  ...........u -> dismissed whith what user have typed.  `plt.scu`

	  # test dismiss in no completion, special symbol
	  # opt-in list of caracters +-/\()[].
	  np<tab>.s          -> a 'dot' sould dismiss the completer and be appended
	  .........<tab>in(  -> np.sin(
	  np.s<tab>in[       -> np.sin[
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
Usability refinements to the as-you-type completer, so it shows the part that is fixed (typed by the user prior to tab), and is dismissed when not needed further.

Closes ipython#1080.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants