Skip to content

Commit

Permalink
Merge pull request #789 from jcb91/readmes
Browse files Browse the repository at this point in the history
A few minor readme updates
  • Loading branch information
jcb91 authored Nov 8, 2016
2 parents e839112 + bd3c9d5 commit 3022eaf
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
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)

0 comments on commit 3022eaf

Please sign in to comment.