* render keyboard shortcuts from KeyboardManager
render keyboard shortcuts from KeyboardManager
* float menu keybindings to the right
* Clean up styling
* Humanize keybindings for display
* Add some missing menu item/action pairs
* Move styles to stylesheet
* remove click event add/removal in enable/disable_paste
* change the CSS rule to avoid wrapping in the middle of the shortcut text (#2759)
Co-authored-by: Aaron Myatt <aaronmyatt@gmail.com>
Co-authored-by: Grant Nestor <grantnestor@gmail.com>
Co-authored-by: Jarrad Whitaker <JWhitaker@officeworks.com.au>
Co-authored-by: Pierre Monod-Broca <pierremonodbroca@gmail.com>
Issue 3182 "Can't paste two images from clipboard in markdown cell"
happens when the user tries to paste a second image into a text
cell and the image gets the same attachment key as the previous one.
This patch fixes that issue by adding an index to each picture that's
pasted after the previous one. Example:
* User pastes an image blob A. The text ``
is added to the text cell and the blob is saved as attachment `image.png`
* The user pastes a second image blob B. The same happens as with blob
A, except the key is now `image-1.png` rather than `image.png`
Special case:
If the user pastes the exact same blob A twice, it will not be added to
the attachments, but the textcell will get a second entry of
``.
Find and replace (searchandreplace.js) will overwrite the contents of cells even if they are marked as non-editable. Add a check against the cell's is_editable() method to ensure this only happens for editable cells.
* Workaround for wrong errno on socket bind permission errors on Cygwin.
* [ci skip] Add period to comment
Co-authored-by: Steven Silvester <stslve@amazon.com>
This patch prevents creation of a new terminal when handling websocket handshaking request. The default behavior of `terminado.NamedTermManager` is to automatically start a new terminal in response to a websocket handshake, which prevents a terminal from being properly shut down in JupyterLab as reported in this [issue](jupyterlab/jupyterlab#5061).
* This is a potential fix to issue #4669. The fix simply catches the
recusrive symlink error and moves on. It is possibble that the
try/except belongs in the utils but I wanted to limit the scope.
* It looks like too many levels is error number 40 on linux.
* Switch to using errno instead of hardcoding the number.
* Fix spelling, smarter assert methods
* Log unrecognised errors and continue listing directory
* Skip recursive symlink test entirely on Windows
* Fix which test is skipped on Windows
Co-authored-by: Thomas Kluyver <thomas@kluyver.me.uk>
* Document contents chunks
Add a documentation entry for the contents API regarding use of "chunk" in save.
Adds an `extra_requires` value in setup.py for installing documentation dependencies.