microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
161.09k stars 28.27k forks source link

Page down and page up do not work in Jupyter notebooks #140148

Open oscarrutt opened 2 years ago

oscarrutt commented 2 years ago

Issue Type: Bug

Page down and page up in Jupyter windows doesn't work. If no cell is in edit mode, either it does nothing or jumps haphazardly between cells. Other times, it tries to scroll a ways and then seems to choke on a plot, then backs up to where it was. If a cell is in edit mode, with a text cursor in it, then no scrolling happens. I am on an Apple laptop where the page down and page up functions are accomplished with Function-downarrow and Function-uparrow.

Also, the scroll-to-top and scroll-to-bottom, Command-uparrow and Command-downarrow, do not work if a cell is in edit mode.

VS Code version: Code 1.63.0 (7db1a2b88f7557e0a43fec75b6ba7e50b3e9f77e, 2021-12-07T05:15:48.091Z) OS version: Darwin x64 15.6.0 Restricted Mode: No

System Info |Item|Value| |---|---| |CPUs|Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz (2 x 2400)| |GPU Status|2d_canvas: unavailable_software
gpu_compositing: disabled_software
metal: disabled_off
multiple_raster_threads: disabled_off
oop_rasterization: disabled_off
opengl: disabled_off
rasterization: disabled_software
skia_renderer: disabled_off_ok
video_decode: disabled_software
webgl: unavailable_software
webgl2: unavailable_software| |Load (avg)|3, 3, 3| |Memory (System)|8.00GB (0.02GB free)| |Process Argv|| |Screen Reader|no| |VM|0%|
Extensions (40) Extension|Author (truncated)|Version ---|---|--- ada|Ada|23.0.1 Bookmarks|ale|13.2.2 pascal|ale|9.4.0 pascal-formatter|ale|2.6.0 project-manager|ale|12.4.0 octave-hacking|apj|0.2.12 vscode-svgviewer|css|2.0.0 vcard|cst|1.0.1 vscode-mac-color-picker|dae|1.0.2 textpad-icon-theme|dam|1.19.21 vscode-markdownlint|Dav|0.45.0 ada-snippets|Ent|0.3.0 gc-excelviewer|Gra|4.0.45 vscode-back-forward-button|gri|0.1.6 vscode-lyx|gyt|0.0.4 latex-workshop|Jam|8.23.0 svn-scm|joh|2.15.2 language-julia|jul|1.5.8 keen-neutral-icon-theme|kee|1.0.8 octave|lea|0.1.1 eps-preview|mkv|0.3.0 python|ms-|2021.12.1559732655 jupyter|ms-|2021.11.1001550889 jupyter-keymap|ms-|1.0.0 jupyter-renderers|ms-|1.0.4 cpptools|ms-|1.7.1 cpptools-extension-pack|ms-|1.1.0 postscript|mxs|1.0.1 vscode-json-editor|nic|0.3.0 vsc-octave-debugger|pau|0.4.23 bib|phr|0.3.0 ipf|qms|1.0.1 vscode-data-preview|Ran|2.3.0 markdown-preview-enhanced|shd|0.6.1 octave|toa|0.0.3 pdf|tom|1.2.0 debug|web|0.25.1 txt-syntax|xsh|0.2.0 markdown-all-in-one|yzh|3.4.0 json|Zai|2.0.2 (3 theme extensions excluded)
A/B Experiments ``` vsliv368cf:30146710 vsreu685:30147344 python383:30185418 vspor879:30202332 vspor708:30202333 vspor363:30204092 pythontb:30283811 pythonptprofiler:30281270 vsdfh931cf:30280410 vshan820:30294714 vstes263:30335439 pythondataviewer:30285071 vscod805cf:30301675 pythonvspyt200:30340761 binariesv615:30325510 bridge0708:30335490 bridge0723:30353136 vsaa593:30376534 pythonvs932:30410667 vscop804:30404766 vs360:30404995 vsrem710cf:30416617 py55gd98:30411514 vscexrecpromp3t1:30407762 ```
leftys commented 2 years ago

Confirming, scrolling in Jupyter notebooks is pretty buggy.

rebornix commented 2 years ago

Thank you both for the feedback, there are two issues here. One is allowing pagedown/up/cmd+up/down to work whether the focus is in the cell editor or not. This can be archived by tweaking the when clauses. For example, we can add following keybindings to your keybindings file to archive a consistent page down experience

{
    "command": "list.focusPageDown",
    "key": "pagedown",
    "when": "editorTextFocus && inputFocus && notebookEditorFocused"
}

The other issue is the page down can jump up and down. This is due to the fact that we don't know the height of cells until rendered, which is something we should polish.

lovettchris commented 1 year ago

I also find this a big problem, I'm getting RSI spinning the mouse wheel. Page down seems to get stuck in a cell then it won't work any more. Took me a long time to realize "escape" removes the keyboard focus from the cell, then page down works again - but this has a bit of a discoverability problem...

kiyoon commented 1 year ago

Even when you escape and focus the cell, the page up down doesn't scroll the page. Instead, it moves cell focus up and down. This is really annoying when the cell and the output are big enough to fill the screen, and you're not able to even scroll through the output. Mouse scroll works and manually dragging the scroll bar works fine. You can already scroll through the cells with arrows or j/k bindings. It shouldn't be difficult to implement scrolling with page up/down without changing the focus of the cell.