* Merge/split works for all cell types.
* Notebook.select won't select an already selected cell.
* Bugs in markdown cell editing fixed.
* border-box-sizing used for Markdown cells to get correct css boxes.
* Shading/border added to Markdown cell editor.
* Cell insertion code completely rewritten. We now have two methods
rather than 9: insert_cell_above, insert_cell_below.
* Renaming methods to be more consistent.
* Creating new methods to provide a uniform API.
* Minor bug fixes.
* Added placeholder to the base Cell class.
* Removed the \u0000 char at the beginning of the TextCell
placeholder that was there for a CodeMirror bug workaround.
* Other refactoring of Cell related Notebook methods.
* Added set_text/get_text in favor of get_code/set_code and
get_source/set_source.
* Added methods to the base class (get_text, set_text, refresh,
edit, render, toJSON, fromJSON).
When enabling paste, I was adding the click callback multiple
times causing paste to overwrite multiple cells. I also found
a bug that was doing paste above instead of paste below.
* QuickHelp button has been removed in favor of a Help menu item.
* Keyboard shortcuts are now in the menus.
* Numerous fixes to subtle aspects of the wijmenu implementation.
Single-click to edit gets in the way of using interactive elements (e.g. non-flash videos),
and select/copy of the rendered HTML. Switching to double-click makes the edit action more intentional.
Following @fperez advice, change the completer apparence to avoid user confusion.
- Append what the user type in the completer in code-miror, (Almost) as if
codemirror still have focus
- distinguish between "fixed" completion part, which was sent to the kernel
(now written in bold) and filtering one,handled only in JS,that the user
can errase without dismissing the completer
I changed the action of <Space> to dismiss the completer with what have
already been typed and inserting a space instead of "picking" the currently
hilighted option
<Escape> will still dissmiss the completer and remove everything the user as
typed since the completer invocation
Note that while the completer is shown, code-mirror does not show any
blinking cursor
- 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[
allow the notebook to run without MathJax
adds --no-mathjax flag for disabling mathjax, and moves the mathjax URL decision to the server from the browser.
closes#1071
prototype functions were actually called which should not happen, and
resulted in objects and their attributes being passed to their own methods
as arguments.
* use jQuery syntax to construct dialog
* server determines where MathJax comes from via mathjax_url configurable (default local/CDN priority unchanged)
* add `--no-mathjax` flag for disabling mathjax in the notebook server
* A jQuery dialog with our 'no mathjax' message will appear if mathjax is unavailable, but the notebook will be fully functional after dismissal.
* Various calls to MathJax.Hub.typeset moved to Cell.typeset, which checks for MathJax existence and is a no-op without it.
closes#1071
when invoking the completer, instead of having to chose/dismiss, you can
continue typing, it will filter the result "as you type" and dismiss itself
if ther is no match left.
As it is now, it's only works with lowercase letters, I need to find a workaroud
for this.
for example
if you type :
* P-y-<tab>-S-o-m-e-t-h-i-n-g
* it will propose PySide, but will dismiss when 'o' is pressed and pasting Pyso with a lower case 's'
if completer get only one match back and the user press tab n time,
it fallbacks on showing a tooltip
n=2 , hard coded for know, and completer verbose on the command line
put "close" and "more..." button in upper right corner,
rename "more..." to "open in pager", add expand button.
tooltip don't have scroll bar an are 'small' until pressing "Expand"
they then change their height and add scrollbars.
Horizontal scrollbar behaviour seem to depend on the browser
>>> plot(<tab> and then click on "expand" :
Firefox : no horizontal scrollbar (wrap line ?)
Chrome : horizontal scrollbar
beware that don't limitting tooltip height or width through css will sometime give
tooltip that are too heigh and will overflow below the bottom of the screen
animation are broken with max-height and/or min-height
change order of completion element so that the ones ending with '='
will be at the beginning of the list. When you complete inside a
fonction call, you then have kwargs first add configuration in the left
pannel
add a section in the left pannel of the notebook to make the time before
triggering a tooltip when pressign "(" configurable. Negative values will
disable the tooltip (comparaison at each keypress for now, but can be
improved) The syle of the <input> field should be a little improve, why not
a slider with jquerry
As until now, when pressing tab and a white space was preceding the cursor
The completion was triggerd with the whole namespace in it. Now if a
whitespace or an opening bracket is just befor the cursor it will try to
display a tooltip. The logic to find what object_info_request is send have
been sightly changed to try to match the expression just before the last
unmached openig bracket before the cursor (without considering what is
after the cursor).
example (_|_ represent the cursor):
>>> his_|_<tab> # completion
>>> hist(_|_<tab> # tooltip on hist
>>> hist(rand(20),bins=range(_|_ <tab> #tooltip on range
>>> hist(rand(20),bins=range(10), _|_ <tab> # tooltip on hist (whitespace before cursor)
>>> hist(rand(20),bins=range(10),_|_ <tab> # completion
as we dont care of what is after the cursor:
>>> hist(rand(5000), bins=50, _|_orientaion='horizontal') # and tab, equivalent to
>>> hist(rand(5000), bins=50, _|_<tab> # onte the space again
>>> hist(_|_rand(5000), bins=50, orientaion='horizontal') # and tab, equivalent to
>>> hist(_|_
the 4 give tooltip on hist
note that you can get tooltip on things that aren't function by appending a
'(' like
>>> matplotlib(<tab>
Which is kinda weird... so we might want to bound another shortcut for
tooltip, but which matches without bracket...
additionnaly I have added a "Config" pannel in the left pannel with a checkbox
bind to wether or not activate this functionnality
Note, (rebase and edited commit, might not work perfetly xwithout the following ones)
When user press '(' and nothing for 1200ms, 'object_info_request' sent to
the kernel. Then tooltip with 'definition' and beggining of 'docstring'
shown to the user if non empty response.
Unlike Completion <select> , <div> is not focusable so event handled in main
cell event handeling function
Add some CSS3 that most browser with websocket should support.
An error would previously be raised whenever iopub traffic arrived that
did not originate with the notebook (e.g. pylab welcome, or qtconsole output).
This error was not in a block that would actually cause problems, so actual
functionality was not affected.
A long message is given if the connection fails within 1s. Otherwise, it is a short 'connection closed unexpectedly'.
This also means that clients are notified on server termination.
When using a password, read-only mode allows unauthenticated users
read-only access to notebooks. Editing, execution, etc. are not
allowed in read-only mode, but save/print functions are available.
No kernels are started until an authenticated user opens a notebook.
Adding clear_output to kernel and HTML notebook.
This enables the clearing of output during the execution of a cell. It can be used for simple forms of animation in the notebook.
All buttons, show/hide clickable areas, etc. should have some tooltip describing
what they do. There are jQuery plugins for enhanced tooltips, but this gets
the lightest version working.
closes#436
Various Notebook usability fixes:
- add kernel restart dialog confirmation (it destroys the user session)
- add missing keybindings
- change language from 'terminal mode' to 'in-place execution' which is more descriptive
- adjust spacing/padding and colors slightly for readability and better use of space in small screens.
- add line numbering toggle to code cells. Triggered with C-m-l.
- show keybindings in monospaced font.
- add QuickHelp button that is always visible and at the top.
- add missing keybindings for kernel interrupt/restart from the kbd.
Now multiple calls no longer show multiple instances of the shortcut dialog. Rather, clicking the quick help, or invoking `C-m h` will hide
the dialog if shown.
stdin requests are now directed to the frontend that made the execution
request that called raw_input.
allow_stdin flag added to execution_request to indicate whether stdin_requests are allowed.
StdInNotImplementedError exception class added to IPython.core.error, and is raised if raw_input is called from execute requests where allow_input is undefined.
closes gh-673
* add think border around input area
* change background instead of foreground on stderr
* only stderr/stdout are output_stream, general text (including streams) is output_text
* reduce vertical padding on stream output, per @fperez
Consecutive messages to stdout or stderr will not be split
into separate divs, until a new message to different stream
arrives.
Appending will only occur when the latest output is the same
as the new one. Interleaving messages will still result in
multiple divs.
* I have added page-break-inside logic to div.input and
div.output_area.
* Fixed a bug in CodeCell that was putting the output_area class
on the wrong div.
I had removed a text area focus event earlier today and that
broke the . key. We are still having problems with CodeMirror
elements gaining focus, but this seems to fix the issue.
* Favicon.ico is served.
* Test suit now passes.
* Help links work for for me.
* Other changes made to address inline comments.
* The printing of long lines is an extremely subtle issue and I will open an issue for it.
* zmqws.py is completely gone so the naked print is not an issue.
* ipython-notebook removed from scripts.
* Updated copyright and authors of files.
* Fixed missing docstrings in IPython.nbformat.
* Full kernel heartbeating is working.
* Connections between the notebook and server and now created
a new each time there is a WebSocket connection. Each channel is
also handled separately. This dramatically simplifies the
server code and makes for a more scalable system.
* The .py notebook reader now uses that ast module to split
a plain python file into blocks. These blocks become cells in
the notebook.
* Proper mime types are used for xml (application/xml), json
(application/json) and python (application/x-python).
* Other fixes to file uploading.
In a notebook setting being able to delete and add cells makes it
virtually impossible to correctly guess what the next input
prompt number should be. We now follow the convention that our
prompts look like "In [ ]:" before execution.
In this mode, a new cell is not created after the current cell
is run. Once the cell is run, the current input is cleared, so
it acts just like the terminal.
* Extra enter on FF is fixed by hooking into CodeMirror's
onKeyEvent hook. We now have CodeMirror ignore shift-enter
completely as we handle it ourselves.
* The cell execution logic in notebook.js has been refactored and
the Run All/Selected buttons have been hooked up.