lsp-mode
lsp-mode copied to clipboard
Get "Invalid Image type: 'svg' when I trying to run lsp-mode
Thank you for the bug report
- [X] I am using the latest version of
lsp-moderelated packages. - [X] I checked FAQ and Troubleshooting sections
- [ ] You may also try reproduce the issue using clean environment using the following command:
M-x lsp-start-plain
Bug description
I follow the installation guide except I use straight as package manager.
everything work smooth , untill when I want to open lsp-mode via M-x lsp-mode or install a new language server via ~M-x lsp-install-serverit give meInvalid Image type: svg.`
Steps to reproduce
my lsp-mode related init file
;;; -*- lexical-binding: t -*-
(use-package lsp-mode
:straight t
:init
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
(setq lsp-keymap-prefix "C-c l")
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
;; (XXX-mode . lsp-deferred)
;; if you want which-key integration
(lsp-mode))
:commands (lsp))
;; optionally
(use-package lsp-ui
:straight t
:commands lsp-ui-mode)
;; if you are helm user
(use-package helm-lsp
:straight t
:commands helm-lsp-workspace-symbol)
;; if you are ivy user
(use-package lsp-ivy
:straight t
:commands lsp-ivy-workspace-symbol)
(use-package lsp-treemacs
:straight t
:commands lsp-treemacs-errors-list)
;; optionally if you want to use debugger
(use-package dap-mode
)
;; (use-package dap-LANGUAGE) to load the dap adapter for your language
(use-package which-key
:straight t
:config
(which-key-mode))
(provide 'init-lsp)
Expected behavior
work as normal.
Which Language Server did you use?
javascript
OS
Linux
Error callstack
Debugger entered--Lisp error: (error "Invalid image type ‘svg’")
signal(error ("Invalid image type ‘svg’"))
error("Invalid image type `%s'" svg)
image-type("/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/ico..." svg nil)
create-image("/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/ico..." svg nil :ascent center :width 22 :height 22)
(if (and (integerp treemacs--icon-size) (image-type-available-p 'imagemagick)) (create-image icon-path 'imagemagick nil :ascent 'center :width width :height height) (create-image icon-path (intern (if (string-match treemacs-file-extension-regex icon-path) (substring icon-path (1+ (match-beginning 0))) icon-path)) nil :ascent 'center :width width :height height))
(let ((height treemacs--icon-size) (width treemacs--icon-size)) (if (and (integerp treemacs--icon-size) (s-starts-with\? "root-" icon-path)) (progn (let ((w (round (* width 0.909))) (h (round (* height 1.1818)))) (setq width w height h)))) (if (and (integerp treemacs--icon-size) (image-type-available-p 'imagemagick)) (create-image icon-path 'imagemagick nil :ascent 'center :width width :height height) (create-image icon-path (intern (if (string-match treemacs-file-extension-regex icon-path) (substring icon-path (1+ (match-beginning 0))) icon-path)) nil :ascent 'center :width width :height height)))
(let* ((img-selected (let ((height treemacs--icon-size) (width treemacs--icon-size)) (if (and (integerp treemacs--icon-size) (s-starts-with\? "root-" icon-path)) (progn (let (... ...) (setq width w height h)))) (if (and (integerp treemacs--icon-size) (image-type-available-p 'imagemagick)) (create-image icon-path 'imagemagick nil :ascent 'center :width width :height height) (create-image icon-path (intern (if ... ... icon-path)) nil :ascent 'center :width width :height height)))) (img-unselected (copy-sequence img-selected))) (nconc img-selected '(:background "darkseagreen2")) (nconc img-unselected '(:background "white")) (concat (propertize " " 'display img-unselected 'img-selected img-selected 'img-unselected img-unselected) " "))
(if (not (image-type-available-p 'png)) fallback (let* ((img-selected (let ((height treemacs--icon-size) (width treemacs--icon-size)) (if (and (integerp treemacs--icon-size) (s-starts-with\? "root-" icon-path)) (progn (let ... ...))) (if (and (integerp treemacs--icon-size) (image-type-available-p ...)) (create-image icon-path 'imagemagick nil :ascent 'center :width width :height height) (create-image icon-path (intern ...) nil :ascent 'center :width width :height height)))) (img-unselected (copy-sequence img-selected))) (nconc img-selected '(:background "darkseagreen2")) (nconc img-unselected '(:background "white")) (concat (propertize " " 'display img-unselected 'img-selected img-selected 'img-unselected img-unselected) " ")))
(let ((tui-icon fallback) (gui-icon (if (not (image-type-available-p 'png)) fallback (let* ((img-selected (let ... ... ...)) (img-unselected (copy-sequence img-selected))) (nconc img-selected '(:background "darkseagreen2")) (nconc img-unselected '(:background "white")) (concat (propertize " " 'display img-unselected 'img-selected img-selected 'img-unselected img-unselected) " "))))) (cons gui-icon tui-icon))
(let* ((xs (mapcar #'(lambda (it) (ignore it) (if (stringp it) (downcase it) it)) '("src-closed"))) (fallback (propertize "+ " 'face 'treemacs-term-node-face)) (icons-dir (progn (or (progn (and (memq ... cl-struct-treemacs-theme-tags) t)) (signal 'wrong-type-argument (list 'treemacs-theme treemacs--current-theme))) (aref treemacs--current-theme 2))) (icon-path (treemacs-join-path icons-dir "vsc/dir-src-closed.svg")) (icon-pair (let ((tui-icon fallback) (gui-icon (if (not ...) fallback (let* ... ... ... ...)))) (cons gui-icon tui-icon))) (gui-icons (progn (or (progn (and (memq ... cl-struct-treemacs-theme-tags) t)) (signal 'wrong-type-argument (list 'treemacs-theme treemacs--current-theme))) (aref treemacs--current-theme 3))) (tui-icons (progn (or (progn (and (memq ... cl-struct-treemacs-theme-tags) t)) (signal 'wrong-type-argument (list 'treemacs-theme treemacs--current-theme))) (aref treemacs--current-theme 4))) (gui-icon (car icon-pair)) (tui-icon (cdr icon-pair))) nil (if (get-text-property 0 'display gui-icon) nil (setq gui-icon (propertize " " 'display gui-icon))) (let ((--dolist-tail-- xs)) (while --dolist-tail-- (let ((ext (car --dolist-tail--))) (if (symbolp ext) (progn (let* (...) (add-to-list ... ext) (set symbol nil)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((list xs) (i 0)) (while list (let ((it (car-safe (prog1 list ...))) (it-index i)) (ignore it it-index) (if (and (not (image-type-available-p ...)) (string= (if ... ... "vsc/dir-src-closed.svg") "svg")) nil (prog1 nil (puthash it gui-icon gui-icons))) (prog1 nil (puthash it tui-icon tui-icons))) (setq i (1+ i)))))
(progn (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) (let* ... nil ... ... ...) ...)
(let* (...) (progn ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (treemacs--propagate-new-icons theme))
(let* (... ... ...) (add-to-list ... theme) nil (let* ... ... ...) "Default")
eval-buffer(#<buffer *load*-855501> nil "/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." nil t) ; Reading at buffer position 32410
load-with-code-conversion("/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." "/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." nil t)
require(treemacs-icons)
eval-buffer(#<buffer *load*-156601> nil "/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." nil t) ; Reading at buffer position 1294
load-with-code-conversion("/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." "/tmp/lsp-tmp-elpaJbSV4a/treemacs-20230510.1644/tre..." nil t)
require(treemacs)
eval-buffer(#<buffer *load*-608501> nil "/tmp/lsp-tmp-elpaJbSV4a/lsp-treemacs-20230504.516/..." nil t) ; Reading at buffer position 1073
load-with-code-conversion("/tmp/lsp-tmp-elpaJbSV4a/lsp-treemacs-20230504.516/..." "/tmp/lsp-tmp-elpaJbSV4a/lsp-treemacs-20230504.516/..." nil t)
require(lsp-treemacs)
eval-buffer(#<buffer *load*-274268> nil "/tmp/lsp-tmp-elpaJbSV4a/lsp-java-20230507.517/lsp-..." nil t) ; Reading at buffer position 1136
load-with-code-conversion("/tmp/lsp-tmp-elpaJbSV4a/lsp-java-20230507.517/lsp-..." "/tmp/lsp-tmp-elpaJbSV4a/lsp-java-20230507.517/lsp-..." nil t)
require(lsp-java)
(closure ((pkg-list lsp-mode lsp-ui yasnippet lsp-java lsp-python-ms lsp-haskell helm-lsp lsp-treemacs dap-mode lsp-origami lsp-dart company flycheck lsp-pyright rust-mode php-mode scala-mode dart-mode clojure-mode typescript-mode csharp-mode haskell-mode) t) (pkg) (if (package-installed-p pkg) nil (package-install pkg)) (require pkg))(lsp-java)
mapc((closure ((pkg-list lsp-mode lsp-ui yasnippet lsp-java lsp-python-ms lsp-haskell helm-lsp lsp-treemacs dap-mode lsp-origami lsp-dart company flycheck lsp-pyright rust-mode php-mode scala-mode dart-mode clojure-mode typescript-mode csharp-mode haskell-mode) t) (pkg) (if (package-installed-p pkg) nil (package-install pkg)) (require pkg)) (lsp-mode lsp-ui yasnippet lsp-java lsp-python-ms lsp-haskell helm-lsp lsp-treemacs dap-mode lsp-origami lsp-dart company flycheck lsp-pyright rust-mode php-mode scala-mode dart-mode clojure-mode typescript-mode csharp-mode haskell-mode))
(let* ((pkg-list '(lsp-mode lsp-ui yasnippet lsp-java lsp-python-ms lsp-haskell helm-lsp lsp-treemacs dap-mode lsp-origami lsp-dart company flycheck lsp-pyright rust-mode php-mode scala-mode dart-mode clojure-mode typescript-mode csharp-mode haskell-mode))) (package-initialize) (package-refresh-contents) (mapc #'(lambda (pkg) (if (package-installed-p pkg) nil (package-install pkg)) (require pkg)) pkg-list) (yas-global-mode) (add-hook 'prog-mode-hook 'lsp) (add-hook 'kill-emacs-hook (list 'lambda nil (cons 'delete-directory (cons package-user-dir '(t))))))
eval-buffer(#<buffer *load*> nil "/tmp/plainITCgcM.el" nil t) ; Reading at buffer position 2311
load-with-code-conversion("/tmp/plainITCgcM.el" "/tmp/plainITCgcM.el" nil t)
load("/tmp/plainITCgcM.el" nil t)
command-line-1(("-l" "/tmp/plainITCgcM.el" "/home/howard/workspace/emacs_dot_d/index.js"))
command-line()
normal-top-level()
Anything else?
No response
when I delete lsp-treemacs related use-package, the error gone. maybe it's some error related to lsp-treemacs
I get this same error after reinstalling my doom emacs today. Occured on clang and pyright/pylsp language servers. I don't think it has anything to with the LSP's.
I have been trying to disable whatever command I can to disable lsp-treemacs and treemacs in my config, but it doesn't seem to work. And google/gpt don't tell me how to completely disable treemacs.
In general, the issue is caused by emacs build not supporting svg. We should handle it a bit more gracefully, but if you have the option just go and install a version supporting svg images.
@yyoncho, thanks for quick reply. Unfortunately, I don't. I am using my work's emacs version. I could compile from source, but my remote station doesn't have the dependencies for emacs 28.1. At least idk where they are to put them in my LD path. Interestingly, this error wasn't occurring before with the same emacs version. So it seems like something changed in one of the packages. As much as I love lsp-mode, I had to switch to eglot because nothing I tried would disable the error. I wish it were a bit easier to disable lsp-treemacs or treemacs in lsp-mode.
@saltsucker FYI, I use straight.el to manage my package, it won't load package if you comment out the package you don't want to load. So I just comment out tree macs related in my init.el, then error gone.
But I compile eMacs which support svg by now.
It's turn out that emacs version of gnu emacs seems to have other problems, so I think maybe downgrade treemacs version should work. But I haven't dig into this yet.
Sorry, It's seems a mistake. I install a version without svg support, and this error occur even if I rm all treemacs related package.
ok find out that dap-mode may use treemacs, which cause the error disable dap-mode and error gone.
@saltsucker FYI, I use straight.el to manage my package, it won't load package if you comment out the package you don't want to load. So I just comment out tree macs related in my init.el, then error gone.
But I compile eMacs which support svg by now.
It's turn out that emacs version of gnu emacs seems to have other problems, so I think maybe downgrade treemacs version should work. But I haven't dig into this yet.
ok find out that dap-mode may use treemacs, which cause the error disable dap-mode and error gone.
Yes, I use doom and you can easily not install it by commenting it out in the init.el. That's a good catch with the dap-mode. I forgot that is related to lsp.
Confirming that I have the same error with latest 28.2 build of Emacs from the https://emacsformacosx.com/ package, which is built with librsvg. Error seems to trace to treemacs
Found the workaround: https://github.com/Alexander-Miller/treemacs/issues/1017#issuecomment-1515602288
; add below line to init.el
(add-to-list 'image-types 'svg)
@idhowardgj94
@kmgolden many thx, you save my day... days
@kmgolden worked for me. Thanks!
In my case, png wasn't in my image-types list. What could cause this?
EDIT: After looking at the GNU emacs manual, I saw that it required libpng to be installed. This did not fix the issue.