chabou/hyper-pane

Doesn't work with Hyper 1.3.1

Closed this issue · 9 comments

Opening a new issue since I can't reopen #5. I updated Hyper in the meantime to the latest version (1.3.1) and also hyper-pane. It still doesn't seem to work:

(re)loading renderer plugins
index.html:35 total init time 311.4649999999999
index.js:31 |HYPER-PANE| updateChildrenFrames: call on 1a5af2f3-eb32-47f9-a0b2-53ad102cddb4
index.js:31 |HYPER-PANE| updateChildrenFrames: no children found, skipping e1f12d3b-a2b3-48f3-be30-11b326a16b0e
index.js:31 |HYPER-PANE| Keep term ref
index.js:31 |HYPER-PANE| Attach mouse handler
index.js:529 Uncaught TypeError: this.term.getTermDocument is not a function
index.js:31 |HYPER-PANE| updateChildrenFrames: call on 1a5af2f3-eb32-47f9-a0b2-53ad102cddb4
index.js:31 |HYPER-PANE| dealing child ca7ab3ca-46cd-4bd0-9f5a-397cbcee8ac1
index.js:31 |HYPER-PANE| Setting frame for Object {uid: "ca7ab3ca-46cd-4bd0-9f5a-397cbcee8ac1", sessionUid: "e1f12d3b-a2b3-48f3-be30-11b326a16b0e", parentUid: "1a5af2f3-eb32-47f9-a0b2-53ad102cddb4", direction: null, sizes: null…} 0 0.5
index.js:31 |HYPER-PANE| updateChildrenFrames: call on ca7ab3ca-46cd-4bd0-9f5a-397cbcee8ac1
index.js:31 |HYPER-PANE| updateChildrenFrames: sessionUid found, skipping e1f12d3b-a2b3-48f3-be30-11b326a16b0e
index.js:31 |HYPER-PANE| dealing child 2e3945f9-1412-4d2a-b5d9-0ce0873dc984
index.js:31 |HYPER-PANE| Setting frame for Object {uid: "2e3945f9-1412-4d2a-b5d9-0ce0873dc984", sessionUid: "0db102f7-589d-49a0-b9d1-c93733b735fd", parentUid: "1a5af2f3-eb32-47f9-a0b2-53ad102cddb4", direction: null, sizes: null…} 0.5 0.5
index.js:31 |HYPER-PANE| updateChildrenFrames: call on 2e3945f9-1412-4d2a-b5d9-0ce0873dc984
index.js:31 |HYPER-PANE| updateChildrenFrames: sessionUid found, skipping 0db102f7-589d-49a0-b9d1-c93733b735fd
index.js:31 |HYPER-PANE| Keep term ref
index.js:31 |HYPER-PANE| Keep term ref
index.js:31 |HYPER-PANE| Attach mouse handler
index.js:529 Uncaught TypeError: this.term.getTermDocument is not a functioncomponentDidMount @ index.js:529notifyAll @ bundle.js:4close @ bundle.js:47closeAll @ bundle.js:1perform @ bundle.js:1perform @ bundle.js:1H @ bundle.js:1closeAll @ bundle.js:1perform @ bundle.js:1batchedUpdates @ bundle.js:47enqueueUpdate @ bundle.js:1enqueueUpdate @ bundle.js:1enqueueSetState @ bundle.js:1ReactComponent.setState @ bundle.js:1Connect.handleChange @ bundle.js:47dispatch @ bundle.js:4N @ bundle.js:4P @ bundle.js:4action @ index.js:314pe @ bundle.js:1(anonymous function) @ bundle.js:1U.a.on.ne @ bundle.js:47emitOne @ events.js:96emit @ events.js:188ipcListener @ bundle.js:47emitTwo @ events.js:106emit @ events.js:191
7bundle.js:41 Uncaught TypeError: Cannot read property 'getPrefs' of undefinedcomponentWillReceiveProps @ bundle.js:41updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47performUpdateIfNecessary @ bundle.js:47performUpdateIfNecessary @ bundle.js:1runBatchedUpdates @ bundle.js:1perform @ bundle.js:1perform @ bundle.js:1H @ bundle.js:1closeAll @ bundle.js:1perform @ bundle.js:1batchedUpdates @ bundle.js:47enqueueUpdate @ bundle.js:1enqueueUpdate @ bundle.js:1enqueueSetState @ bundle.js:1ReactComponent.setState @ bundle.js:1Connect.handleChange @ bundle.js:47dispatch @ bundle.js:4N @ bundle.js:4P @ bundle.js:4action @ index.js:314pe @ bundle.js:1(anonymous function) @ bundle.js:1onResize @ bundle.js:41W.onTerminalResize @ bundle.js:5I.Terminal.IO.onTerminalResize_ @ bundle.js:47I.Terminal.realizeSize_ @ bundle.js:47I.Terminal.onResize_ @ bundle.js:47notifyList @ bundle.js:47
bundle.js:5 Uncaught TypeError: Cannot read property 'focusHyperCaret' of undefinedfocus @ bundle.js:5handleFocusActive @ bundle.js:4componentDidUpdate @ bundle.js:4notifyAll @ bundle.js:4close @ bundle.js:47closeAll @ bundle.js:1perform @ bundle.js:1perform @ bundle.js:1H @ bundle.js:1closeAll @ bundle.js:1perform @ bundle.js:1batchedUpdates @ bundle.js:47enqueueUpdate @ bundle.js:1enqueueUpdate @ bundle.js:1enqueueSetState @ bundle.js:1ReactComponent.setState @ bundle.js:1Connect.handleChange @ bundle.js:47dispatch @ bundle.js:4N @ bundle.js:4P @ bundle.js:4action @ index.js:314pe @ bundle.js:1(anonymous function) @ bundle.js:1requestAnimationFrame @ bundle.js:47
bundle.js:41 Uncaught TypeError: Cannot read property 'getPrefs' of undefinedcomponentWillReceiveProps @ bundle.js:41updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1updateChildren @ bundle.js:47_reconcilerUpdateChildren @ bundle.js:47_updateChildren @ bundle.js:47updateChildren @ bundle.js:47_updateDOMChildren @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47receiveComponent @ bundle.js:47receiveComponent @ bundle.js:1_updateRenderedComponent @ bundle.js:47_performComponentUpdate @ bundle.js:47updateComponent @ bundle.js:47performUpdateIfNecessary @ bundle.js:47performUpdateIfNecessary @ bundle.js:1runBatchedUpdates @ bundle.js:1perform @ bundle.js:1perform @ bundle.js:1H @ bundle.js:1closeAll @ bundle.js:1perform @ bundle.js:1batchedUpdates @ bundle.js:47enqueueUpdate @ bundle.js:1enqueueUpdate @ bundle.js:1enqueueSetState @ bundle.js:1ReactComponent.setState @ bundle.js:1Connect.handleChange @ bundle.js:47dispatch @ bundle.js:4N @ bundle.js:4P @ bundle.js:4action @ index.js:314pe @ bundle.js:1V @ bundle.js:1onActive @ bundle.js:41handleMouseUp @ bundle.js:5

Split panes completely stop to work once I enable hyper-pane. Whether showIndicators is set to true or false doesn't matter.

@lanthaler whats your full config?

have you tried to keep only hyper-pane in the plugins list?

though seems like a problem with this

Maybe onTermRef is called by a decorated Term and not a real Term instance.
It could explain : this.term.getTermDocument is not a function

@lanthaler your hyper config will help to reproduce as @iamstarkov said

Here's my full config

module.exports = {
  config: {
    // default font size in pixels for all tabs
    fontSize: 14,

    // font family with optional fallbacks
    fontFamily: '"DejaVu Sans Mono", Menlo, "Lucida Console", monospace',

    // terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
    cursorColor: 'rgba(248,28,229,0.8)',

    // `BEAM` for |, `UNDERLINE` for _, `BLOCK` for █
    cursorShape: 'BLOCK',

    // Make cursor blink
    cursorBlink: true,

    // color of the text
    foregroundColor: '#fff',

    // terminal background color
    backgroundColor: '#300a24',

    // border color (window, tabs)
    borderColor: '#875f87', //'#333',

    // custom css to embed in the main window
    css: '.hyper_main { border: none !important; } .tab_tab { border: none; } .tab_tab.tab_active { background-color: #875f87 !important }',

    // custom css to embed in the terminal window
    termCSS: '',

    // set to `true` if you're using a Linux set up
    // that doesn't shows native menus
    // default: `false` on Linux, `true` on Windows (ignored on macOS)
    showHamburgerMenu: true,

    // set to `false` if you want to hide the minimize, maximize and close buttons
    // additionally, set to `'left'` if you want them on the left, like in Ubuntu
    // default: `true` on windows and Linux (ignored on macOS)
    showWindowControls: true,

    // custom padding (css format, i.e.: `top right bottom left`)
    padding: '12px 14px',

    // the full list. if you're going to provide the full color palette,
    // including the 6 x 6 color cubes and the grayscale map, just provide
    // an array here instead of a color map object
    colors: {
      black: '#000000',
      red: '#ff0000',
      green: '#33ff00',
      yellow: '#ffff00',
      blue: '#0066ff',
      magenta: '#cc00ff',
      cyan: '#00ffff',
      white: '#d0d0d0',
      lightBlack: '#808080',
      lightRed: '#ff0000',
      lightGreen: '#33ff00',
      lightYellow: '#ffff00',
      lightBlue: '#0066ff',
      lightMagenta: '#cc00ff',
      lightCyan: '#00ffff',
      lightWhite: '#ffffff'
    },

    // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    // if left empty, your system's login shell will be used by default
    shell: '/bin/bash',

    // for setting shell arguments (i.e. for using interactive shellArgs: ['-i'])
    // by default ['--login'] will be used
    shellArgs: ['-i'],

    // for environment variables
    env: {},

    // set to false for no bell
    bell: false,

    // if true, selected text will automatically be copied to the clipboard
    copyOnSelect: false,

    // URL to custom bell
    // bellSoundURL: 'http://example.com/bell.mp3',

    // for advanced config flags please refer to https://hyper.is/#cfg

    paneNavigation: {
      debug: true,
      hotkeys: {
        navigation: {
          up: 'ctrl+shift+up',
          down: 'ctrl+shift+down',
          left: 'ctrl+shift+left',
          right: 'ctrl+shift+right'
        },
        permutation_modifier: 'alt', // Added to jump and navigation hotkeys for pane permutation
      },
      showIndicators: false,
      focusOnMouseHover: false
    }
  },

  // a list of plugins to fetch and install from npm
  // format: [@org/]project[#version]
  // examples:
  //   `hyperpower`
  //   `@company/project`
  //   `project#1.0.1`
  plugins: [
    'hyperterm-monokai',
    'hyperlinks',
    'hyper-pane',
  ],

  // in development, you can create a directory under
  // `~/.hyper_plugins/local/` and include it here
  // to load it and avoid it being `npm install`ed
  localPlugins: []
};

Let me know if you need any logs or other data

Ok, reproduced.
Not easy to fix...

But there is a simple workaround : put hyper-pane first in your plugin list.

That partially solves the issue. I can jump left and right with ctrl+shift+left / ctrl+shift+right. Without the ctrl it doesn't at the sequence isn't swallowed and instead I see D's and C's in my console instead, which is the same behavior I get with the up/down mapped to ctrl+shift+up leads to an A printed in my console and ctrl+shift+down in a B.

The much bigger issue though is that when I get rid of panes by executing exit in them, other panes stop working. I can't type in them anymore. Or more concretely, I don't see what I type printed on the screen and also not the output of commands like ls. Apparently the command still gets executed though because blindly typing exit and pressing enter closes panes and eventually hyper.

Just published v1.1.3:
Not having hyper-pane as first plugin will not break Hyper. But focusOnMouseOver will not work. We need to wait for Hyper next version landing (PR #1680 has been merged into master).

I think thatexit issue is an Hyper issue see vercel/hyper#1676

Please open a new issue for your shortcut issue with more informations (OS, DevTools output...)

Fixed by 5110c0f and ship with v1.3.0