jaanauati / hyper-search

Search-text plugin for Hyper.js
173 stars 21 forks source link

hightlight on wrong location #60

Closed kangho99 closed 5 years ago

kangho99 commented 5 years ago
screehshot

Like the image suggests, the issue is very straightforward. Search result highlights wrong location on some cases.

It was a clean, first hyper install, and hyper-search was the first plugin installed.

jaanauati commented 5 years ago

Hi!, I'm unable to reproduce this, I even tried w a new+fresh install but this error is not happening. Could u please share some details abt your setup?

thank you!

kangho99 commented 5 years ago

Of course, I should have included those in first place - macOS Mojave 10.14.4, Hyper 3.0.2 (stable), hyper-search (0.2.2), hyper-active-tab (0.0.2), hyperpower (1.1.1), hyper-dark-scrollbar (1.2.4), and it's probably irrelevant, but the shell is zsh.

I got the same results just now, trying to find from results of 'ls' right after opening Hyper.

The copy of .hyper.js below.

// Future versions of Hyper may add additional config options, // which will not automatically be merged into this file. // See https://hyper.is#cfg for all currently supported options.

module.exports = { config: { // choose either 'stable' for receiving highly polished, // or 'canary' for less polished but more frequent updates updateChannel: 'stable',

  // default font size in pixels for all tabs
  fontSize: 12,

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

  // default font weight: 'normal' or 'bold'
  fontWeight: 'normal',

  // font weight for bold characters: 'normal' or 'bold'
  fontWeightBold: 'bold',

  // line height as a relative unit
  lineHeight: 1,

  // letter spacing as a relative unit
  letterSpacing: 0,

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

  // terminal text color under BLOCK cursor
  cursorAccentColor: '#000',

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

  // set to `true` (without backticks and without quotes) for blinking cursor
  cursorBlink: true,

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

  // terminal background color
  // opacity is only supported on macOS
  backgroundColor: 'rgba(32,32,32,0.5)',

  // terminal selection color
  selectionColor: 'rgba(248,28,229,0.3)',

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

  // custom CSS to embed in the main window
  css: '',

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

  // if you're using a Linux setup which show native menus, set to false
  // default: `true` on Linux, `true` on Windows, ignored on macOS
  showHamburgerMenu: '',

  // set to `false` (without backticks and without quotes) 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` (without backticks and without quotes) on Windows and Linux, ignored on macOS
  showWindowControls: '',

  // 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: '#ED4E45',
    green: '#4EE450',
    yellow: '#FFFF33',
    blue: '#668CFF',
    magenta: '#DE87DD',
    cyan: '#7BEAEA',
    white: '#CCCCCC',
    lightBlack: '#686868',
    lightRed: '#FD6F6B',
    lightGreen: '#67F86F',
    lightYellow: '#FFFA72',
    lightBlue: '#6A76FB',
    lightMagenta: '#FD7CFC',
    lightCyan: '#68FDFE',
    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
  //
  // Windows
  // - Make sure to use a full path if the binary name doesn't work
  // - Remove `--login` in shellArgs
  //
  // Bash on Windows
  // - Example: `C:\\Windows\\System32\\bash.exe`
  //
  // PowerShell on Windows
  // - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
  shell: '',

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

  // for environment variables
  env: {},

  // set to `false` for no bell
  bell: 'SOUND',

  // if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard
  copyOnSelect: false,

  // if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH
  defaultSSHApp: true,

  // if `true` (without backticks and without quotes), on right click selected text will be copied or pasted if no
  // selection is present (`true` by default on Windows and disables the context menu feature)
  quickEdit: false,

  // choose either `'vertical'`, if you want the column mode when Option key is hold during selection (Default)
  // or `'force'`, if you want to force selection regardless of whether the terminal is in mouse events mode
  // (inside tmux or vim with mouse mode enabled for example).
  macOptionSelectionMode: 'vertical',

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

  // Whether to use the WebGL renderer. Set it to false to use canvas-based
  // rendering (slower, but supports transparent backgrounds)
  webGLRenderer: true,

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

  // hyper-active-tab
  activeTab: {
    symbol: '⚡',
    color: 'yellow'
  }
},

// a list of plugins to fetch and install from npm
// format: [@org/]project[#version]
// examples:
//   `hyperpower`
//   `@company/project`
//   `project#1.0.1`
plugins: ["hyper-search", "hyper-active-tab", "hyperpower", "hyper-dark-scrollbar"],

// 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: [],

keymaps: {
  // Example
  // 'window:devtools': 'cmd+alt+o',
},

};

jaanauati commented 5 years ago

@kangho99 thanks for the quick response, i'll be trying to reproduce the bug using your config in the following days.

samuelyeungkc commented 5 years ago

the issue is in containers.js file inside the function getLine. Current implementation does the following:

for (let charIdx = 0; charIdx < lineBuffer.length; charIdx++) { line += lineBuffer.get(charIdx)[1]; }

when white space is encountered (eg. 'Download Document') the function would the string without the whitespace I'DownloadDocument'). I looked up the xterm.js documentation, there is a function called translateToString() for BufferLine. By directly returning the result from translateToString() the correct location is highlighted.

I have opened a PR to fix the issue #70

jaanauati commented 5 years ago

https://github.com/jaanauati/hyper-search/pull/70 has been merged and published to npm (hyper-search@0.3.1).

@kangho99 please let us know if u still have issues.

Thank you @samuelyeungkc !!! 🍺

kangho99 commented 5 years ago

I don't see the issue after update. Thank you both for nice plugin and quick fix! @jaanauati @samuelyeungkc