Skip to content
This repository

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

Closed
stefanv opened this Issue December 01, 2011 · 2 comments

3 participants

Stefan van der Walt Fernando Perez Matthias Bussonnier
Stefan van der Walt

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?

Matthias Bussonnier
Collaborator
Matthias Bussonnier
Collaborator

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.

Matthias Bussonnier Carreau referenced this issue from a commit December 01, 2011
Commit has since been removed from the repository and is no longer available.
Matthias Bussonnier Carreau referenced this issue from a commit in Carreau/ipython December 01, 2011
Matthias Bussonnier usability and cross browser compat for completer
	- 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 #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[
6c78e9b
Matthias Bussonnier Carreau referenced this issue from a commit December 06, 2011
Commit has since been removed from the repository and is no longer available.
Matthias Bussonnier Carreau referenced this issue from a commit in Carreau/ipython December 01, 2011
Matthias Bussonnier usability and cross browser compat for completer
	- 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 #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[
c630b34
Fernando Perez fperez closed this issue from a commit December 01, 2011
Matthias Bussonnier usability and cross browser compat for completer
	- 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 #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[
c630b34
Fernando Perez fperez closed this in c630b34 December 06, 2011
Fernando Perez fperez closed this in 964bfe4 December 06, 2011
Brian E. Granger ellisonbg referenced this issue from a commit January 10, 2012
Commit has since been removed from the repository and is no longer available.
Fernando Perez fperez referenced this issue from a commit January 10, 2012
Commit has since been removed from the repository and is no longer available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.