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

A few minor readme updates #789

Merged
merged 3 commits into from
Nov 8, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,60 +1,79 @@
Codefolding
===========

This extension adds codefolding functionality from CodeMirror to a codecell.

After clicking on the gutter (left margin of codecell) or typing `Alt+F`, the code gets folded. See the examples below. The folding status is saved in the cell metadata of the notebook, so reloading of a notebook will restore the folding view.

Supported modes
---------------

Three different folding modes are supported:


### Indent Folding

Python-style code folding, detetects indented code.
![Unfolded](codefolding_indent_unfolded.png)

The unfolded code above can be folded like this:

![](codefolding_indent_folded_1.png)

or this:

![](codefolding_indent_folded_2.png)


### Bracket Folding

Other languages like Javascript use brackets to designate code blocks. Codefolding is supported for Javascript in using the `%%javascript` magic in a codecell.


### Firstline Comment Folding

Allows collapsing of Python code cells to a single comment line. This is useful for long codecells. The algorithm simply looks for a comment in the first line and allows folding in the rest of the cell.

![](codefolding_firstline_unfolded.png)

The code above can be folded like this:

![](codefolding_firstline_folded.png)


### Magics Folding

If you specify a magic in the first line of a cell, it can be folded, too.

![](magic-unfolded.png)

Folded:

![](magic-folded.png)


Internals
---------

When saving a notebook, the folding information is saved in the metadata of each codecell.
The number of the folding start line (beginning with 0) is stored in an array:

```javascript
cell.metadata.code_folding = [ 3, 20, 33 ]
```

When reloading the notebook, the folding status is restored.


Exporting
---------

To export a notebook containing folded cells, you will need to apply a custom preprocessor for nbconvert.
The preprocessor is located in `nbconvert_support/pre_codefolding.py`.
The preprocessor is located in `jupyter_contrib_nbextensions/nbconvert_support/pre_codefolding.py`.

The preprocessor is installed when you install the jupyter_contrib_nbextensions package.
To activate the preprocessor manually, add the following lines to `jupyter_nbconvert_config.py`:
```javascript
Exporter.preprocessors ='pre_codefolding.CodeFoldingPreprocessor'

```python
Exporter.preprocessors += ['jupyter_contrib_nbextensions.nbconvert_support.CodeFoldingPreprocessor']
```
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Help menu entry
===============

The contrib_nbextensions_help_item is a tiny extension that just adds an item in the notebook's help menu, pointing to the jupyter_contrib_nbextensions at readthedocs.
The `contrib_nbextensions_help_item` is a tiny nbextension that just adds an
item to the notebook's help menu, pointing to the docs at readthedocs:
[jupyter_contrib_nbextensions.readthedocs.io](https://jupyter_contrib_nbextensions.readthedocs.io)
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Datestamper
===========

Adds a toolbar button which pastes the current time & date into the current cell.
Adds a toolbar button which pastes the current time & date into the current cell:

![](icon.png)