randy3k / Terminus

Bring a real terminal to Sublime Text
https://packagecontrol.io/packages/Terminus
MIT License
1.39k stars 81 forks source link

Imgcat/Inline images - Output hangs when a pixel unit is used for width or height #218

Closed macowie closed 4 years ago

macowie commented 4 years ago

According to the imgcat specifications, width and height can be specified with one of 4 types of values:

In Terminus, N% seems to work, passing just N does scale the image, but it's not quite 1:1 to a character cell (or I may be misunderstanding this), and passing Npx crashes the plugin.

I should note I ran into this because Rails passes height=400px when displaying inline screenshots from the test runner. So it's something many people could encounter (and not have direct control over).

Sublime console backtrace:

Traceback (most recent call last):
  File "./python3.3/threading.py", line 901, in _bootstrap_inner
  File "./python3.3/threading.py", line 858, in run
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/terminal.py", line 156, in renderer
    feed_data()
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/terminal.py", line 151, in feed_data
    self.stream.feed(data[0])
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/ptty.py", line 784, in feed
    send(data[start])
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/ptty.py", line 757, in _parser_fsm
    osc_dispatch[code](param)
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/ptty.py", line 548, in handle_iterm_protocol
    self.show_image_callback(data, arguments, cr)
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/terminal.py", line 403, in show_image
    args["preserveAspectRatio"] if "preserveAspectRatio" in args else 1
  File "/home/matthew/.config/sublime-text-3/Installed Packages/Terminus.sublime-package/terminus/image.py", line 71, in image_resize
    height = int((area / ratio) ** 0.5)
TypeError: unsupported operand type(s) for /: 'str' and 'float'
randy3k commented 4 years ago

Thanks for reporting it. 0800dbf should fix it. Please reopen the issue if it doesn't.