##// END OF EJS Templates
Fix #4777 and #7887...
Fix #4777 and #7887 The function in charge of actually converting cursor offset to CodeMirror line number and character number was actually crashing when the cursor was at the last character (loop until undefined, then access length of variable, which is undefined). This was hiding a bug in which when you would completer to a single completion pressing tab after as-you-type filtering, the completion would be completed twice. The logic that was supposed to detect whether or not all completions had a common prefix was actually faulty as the common prefix used to be a string but was then changed to an object. Hence the logic to check whether or not there was actually a common prefix was always true, even for empty string, leading to the deletion of the line (replace by '') in some cases.

File last commit:

r20393:141231cc merge
r20538:ae7f6d6a
Show More
notebook.html
327 lines | 16.3 KiB | text/html | HtmlLexer
{% extends "page.html" %}
{% block stylesheet %}
{% if mathjax_url %}
<script type="text/javascript" src="{{mathjax_url}}?config=TeX-AMS_HTML-full&delayStartupUntil=configured" charset="utf-8"></script>
{% endif %}
<script type="text/javascript">
// MathJax disabled, set as null to distingish from *missing* MathJax,
// where it will be undefined, and should prompt a dialog later.
window.mathjax_url = "{{mathjax_url}}";
</script>
<link rel="stylesheet" href="{{ static_url("components/bootstrap-tour/build/css/bootstrap-tour.min.css") }}" type="text/css" />
<link rel="stylesheet" href="{{ static_url("components/codemirror/lib/codemirror.css") }}">
{{super()}}
<link rel="stylesheet" href="{{ static_url("notebook/css/override.css") }}" type="text/css" />
<link rel="stylesheet" href="" id='kernel-css' type="text/css" />
{% endblock %}
{% block bodyclasses %}notebook_app {{super()}}{% endblock %}
{% block params %}
data-project="{{project}}"
data-base-url="{{base_url}}"
data-ws-url="{{ws_url}}"
data-notebook-name="{{notebook_name}}"
data-notebook-path="{{notebook_path}}"
{% endblock %}
{% block headercontainer %}
<span id="save_widget" class="pull-left save_widget">
<span id="notebook_name" class="filename"></span>
<span class="checkpoint_status"></span>
<span class="autosave_status"></span>
</span>
<span id="kernel_logo_widget">
<img class="current_kernel_logo" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"/>
</span>
{% endblock headercontainer %}
{% block header %}
<div id="menubar-container" class="container">
<div id="menubar">
<div id="menus" class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<button type="button" class="btn btn-default navbar-btn navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<i class="fa fa-bars"></i>
<span class="navbar-text">Menu</span>
</button>
<p id="kernel_indicator" class="navbar-text indicator_area">
<span class="kernel_indicator_name">Kernel</span>
<i id="kernel_indicator_icon"></i>
</p>
<i id="readonly-indicator" class="navbar-text" title='This notebook is read-only'>
<span class="fa-stack">
<i class="fa fa-save fa-stack-1x"></i>
<i class="fa fa-ban fa-stack-2x text-danger"></i>
</span>
</i>
<i id="modal_indicator" class="navbar-text"></i>
<span id="notification_area"></span>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">File</a>
<ul id="file_menu" class="dropdown-menu">
<li id="new_notebook" class="dropdown-submenu">
<a href="#">New Notebook</a>
<ul class="dropdown-menu" id="menu-new-notebook-submenu"></ul>
</li>
<li id="open_notebook"
title="Opens a new window with the Dashboard view">
<a href="#">Open...</a></li>
<!-- <hr/> -->
<li class="divider"></li>
<li id="copy_notebook"
title="Open a copy of this notebook's contents and start a new kernel">
<a href="#">Make a Copy...</a></li>
<li id="rename_notebook"><a href="#">Rename...</a></li>
<li id="save_checkpoint"><a href="#">Save and Checkpoint</a></li>
<!-- <hr/> -->
<li class="divider"></li>
<li id="restore_checkpoint" class="dropdown-submenu"><a href="#">Revert to Checkpoint</a>
<ul class="dropdown-menu">
<li><a href="#"></a></li>
<li><a href="#"></a></li>
<li><a href="#"></a></li>
<li><a href="#"></a></li>
<li><a href="#"></a></li>
</ul>
</li>
<li class="divider"></li>
<li id="print_preview"><a href="#">Print Preview</a></li>
<li class="dropdown-submenu"><a href="#">Download as</a>
<ul class="dropdown-menu">
<li id="download_ipynb"><a href="#">IPython Notebook (.ipynb)</a></li>
<li id="download_script"><a href="#">Script</a></li>
<li id="download_html"><a href="#">HTML (.html)</a></li>
<li id="download_rst"><a href="#">reST (.rst)</a></li>
<li id="download_pdf"><a href="#">PDF (.pdf)</a></li>
</ul>
</li>
<li class="divider"></li>
<li id="trust_notebook"
title="Trust the output of this notebook">
<a href="#" >Trust Notebook</a></li>
<li class="divider"></li>
<li id="kill_and_exit"
title="Shutdown this notebook's kernel, and close this window">
<a href="#" >Close and Halt</a></li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Edit</a>
<ul id="edit_menu" class="dropdown-menu">
<li id="cut_cell"><a href="#">Cut Cell</a></li>
<li id="copy_cell"><a href="#">Copy Cell</a></li>
<li id="paste_cell_above" class="disabled"><a href="#">Paste Cell Above</a></li>
<li id="paste_cell_below" class="disabled"><a href="#">Paste Cell Below</a></li>
<li id="paste_cell_replace" class="disabled"><a href="#">Paste Cell &amp; Replace</a></li>
<li id="delete_cell"><a href="#">Delete Cell</a></li>
<li id="undelete_cell" class="disabled"><a href="#">Undo Delete Cell</a></li>
<li class="divider"></li>
<li id="split_cell"><a href="#">Split Cell</a></li>
<li id="merge_cell_above"><a href="#">Merge Cell Above</a></li>
<li id="merge_cell_below"><a href="#">Merge Cell Below</a></li>
<li class="divider"></li>
<li id="move_cell_up"><a href="#">Move Cell Up</a></li>
<li id="move_cell_down"><a href="#">Move Cell Down</a></li>
<li class="divider"></li>
<li id="edit_nb_metadata"><a href="#">Edit Notebook Metadata</a></li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">View</a>
<ul id="view_menu" class="dropdown-menu">
<li id="toggle_header"
title="Show/Hide the IPython Notebook logo and notebook title (above menu bar)">
<a href="#">Toggle Header</a></li>
<li id="toggle_toolbar"
title="Show/Hide the action icons (below menu bar)">
<a href="#">Toggle Toolbar</a></li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Insert</a>
<ul id="insert_menu" class="dropdown-menu">
<li id="insert_cell_above"
title="Insert an empty Code cell above the currently active cell">
<a href="#">Insert Cell Above</a></li>
<li id="insert_cell_below"
title="Insert an empty Code cell below the currently active cell">
<a href="#">Insert Cell Below</a></li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Cell</a>
<ul id="cell_menu" class="dropdown-menu">
<li id="run_cell" title="Run this cell, and move cursor to the next one">
<a href="#">Run</a></li>
<li id="run_cell_select_below" title="Run this cell, select below">
<a href="#">Run and Select Below</a></li>
<li id="run_cell_insert_below" title="Run this cell, insert below">
<a href="#">Run and Insert Below</a></li>
<li id="run_all_cells" title="Run all cells in the notebook">
<a href="#">Run All</a></li>
<li id="run_all_cells_above" title="Run all cells above (but not including) this cell">
<a href="#">Run All Above</a></li>
<li id="run_all_cells_below" title="Run this cell and all cells below it">
<a href="#">Run All Below</a></li>
<li class="divider"></li>
<li id="change_cell_type" class="dropdown-submenu"
title="All cells in the notebook have a cell type. By default, new cells are created as 'Code' cells">
<a href="#">Cell Type</a>
<ul class="dropdown-menu">
<li id="to_code"
title="Contents will be sent to the kernel for execution, and output will display in the footer of cell">
<a href="#">Code</a></li>
<li id="to_markdown"
title="Contents will be rendered as HTML and serve as explanatory text">
<a href="#">Markdown</a></li>
<li id="to_raw"
title="Contents will pass through nbconvert unmodified">
<a href="#">Raw NBConvert</a></li>
</ul>
</li>
<li class="divider"></li>
<li id="current_outputs" class="dropdown-submenu"><a href="#">Current Output</a>
<ul class="dropdown-menu">
<li id="toggle_current_output"
title="Hide/Show the output of the current cell">
<a href="#">Toggle</a>
</li>
<li id="toggle_current_output_scroll"
title="Scroll the output of the current cell">
<a href="#">Toggle Scrolling</a>
</li>
<li id="clear_current_output"
title="Clear the output of the current cell">
<a href="#">Clear</a>
</li>
</ul>
</li>
<li id="all_outputs" class="dropdown-submenu"><a href="#">All Output</a>
<ul class="dropdown-menu">
<li id="toggle_all_output"
title="Hide/Show the output of all cells">
<a href="#">Toggle</a>
</li>
<li id="toggle_all_output_scroll"
title="Scroll the output of all cells">
<a href="#">Toggle Scrolling</a>
</li>
<li id="clear_all_output"
title="Clear the output of all cells">
<a href="#">Clear</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Kernel</a>
<ul id="kernel_menu" class="dropdown-menu">
<li id="int_kernel"
title="Send KeyboardInterrupt (CTRL-C) to the Kernel">
<a href="#">Interrupt</a>
</li>
<li id="restart_kernel"
title="Restart the Kernel">
<a href="#">Restart</a>
</li>
<li id="reconnect_kernel"
title="Reconnect to the Kernel">
<a href="#">Reconnect</a>
</li>
<li class="divider"></li>
<li id="menu-change-kernel" class="dropdown-submenu">
<a href="#">Change kernel</a>
<ul class="dropdown-menu" id="menu-change-kernel-submenu"></ul>
</li>
</ul>
</li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Help</a>
<ul id="help_menu" class="dropdown-menu">
<li id="notebook_tour" title="A quick tour of the notebook user interface"><a href="#">User Interface Tour</a></li>
<li id="keyboard_shortcuts" title="Opens a tooltip with all keyboard shortcuts"><a href="#">Keyboard Shortcuts</a></li>
<li class="divider"></li>
{% set
sections = (
(
("http://nbviewer.ipython.org/github/ipython/ipython/blob/3.x/examples/Notebook/Index.ipynb", "Notebook Help", True),
("https://help.github.com/articles/markdown-basics/","Markdown",True),
),
)
%}
{% for helplinks in sections %}
{% for link in helplinks %}
<li><a href="{{link[0]}}" {{'target="_blank" title="Opens in a new window"' if link[2]}}>
{{'<i class="fa fa-external-link menu-icon pull-right"></i>' if link[2]}}
{{link[1]}}
</a></li>
{% endfor %}
{% if not loop.last %}
<li class="divider"></li>
{% endif %}
{% endfor %}
<li class="divider"></li>
<li title="About IPython Notebook"><a id="notebook_about" href="#">About</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="maintoolbar" class="navbar">
<div class="toolbar-inner navbar-inner navbar-nobg">
<div id="maintoolbar-container" class="container"></div>
</div>
</div>
</div>
<div class="lower-header-bar"></div>
{% endblock header %}
{% block site %}
<div id="ipython-main-app">
<div id="notebook_panel">
<div id="notebook"></div>
<div id='tooltip' class='ipython_tooltip' style='display:none'></div>
</div>
</div>
{% endblock %}
{% block after_site %}
<div id="pager">
<div id="pager-contents">
<div id="pager-container" class="container"></div>
</div>
<div id='pager-button-area'></div>
</div>
{% endblock %}
{% block script %}
{{super()}}
<script type="text/javascript">
sys_info = {{sys_info}};
</script>
<script src="{{ static_url("components/text-encoding/lib/encoding.js") }}" charset="utf-8"></script>
<script src="{{ static_url("notebook/js/main.js") }}" charset="utf-8"></script>
{% endblock %}