emacs-lsp / lsp-treemacs

lsp-mode :heart: treemacs
GNU General Public License v3.0
396 stars 46 forks source link

error when switching workspaces #111

Open untoreh opened 2 years ago

untoreh commented 2 years ago

When I switch workspaces I consistently get this error:

Error (treemacs-switch-workspace-hook): Error running hook #("lsp-treemacs--treemacs->lsp" 0 27 (face nil)) because: (wrong-type-argument integer-or-marker-p nil)

maybe it happens because it is trying to remove a workspace which root folder is a symlink? so it is not finding the correct match

stackstrace ``` goto-char(nil) (let* ((project-path (progn (progn (aref project 2)))) (project-pos (goto-char (gethash (if (progn (and ... t)) (progn (progn ...)) project-path) treemacs--project-positions nil))) (prev-project-pos (move-marker (make-marker) (previous-single-char-property-change (point-at-bol) :project))) (next-project-pos (move-marker (make-marker) (next-single-char-property-change (point-at-eol) :project)))) (if (eq 'root-node-open (let* ((button (gethash (if ... ... project) treemacs--project-positions nil))) (get-text-property button :state))) (progn (treemacs--collapse-root-node project-pos t))) (progn (let ((cl-x (treemacs-current-workspace))) (let* ((v cl-x)) (aset v 2 (delete project (let (...) (progn ...)))))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let ((buffer (car --dolist-tail--))) (save-current-buffer (set-buffer buffer) (if (equal treemacs--project-of-buffer project) (progn ...))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let ((buf (car --dolist-tail--))) (let* ((v buf)) (save-current-buffer (set-buffer v) (set (make-local-variable ...) nil))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((previous-button (previous-button project-pos)) (next-button (next-button project-pos))) (cond (previous-button (delete-region (or (next-single-property-change previous-button 'button) (point-max)) (point-at-eol)) (if next-button (progn (forward-button 1)))) (next-button (if (> next-button treemacs--projects-end) (progn (set-marker-insertion-type treemacs--projects-end nil))) (delete-region (point-at-bol) (progn (goto-char next-button) (forward-line 0) (point)))) (t (delete-region (point-at-bol) (point-at-eol))))) (if (equal (point-min) prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (let (buffer-read-only) (let* ((project-path (progn (progn (aref project 2)))) (project-pos (goto-char (gethash (if (progn ...) (progn ...) project-path) treemacs--project-positions nil))) (prev-project-pos (move-marker (make-marker) (previous-single-char-property-change (point-at-bol) :project))) (next-project-pos (move-marker (make-marker) (next-single-char-property-change (point-at-eol) :project)))) (if (eq 'root-node-open (let* ((button (gethash ... treemacs--project-positions nil))) (get-text-property button :state))) (progn (treemacs--collapse-root-node project-pos t))) (progn (let ((cl-x (treemacs-current-workspace))) (let* ((v cl-x)) (aset v 2 (delete project (let ... ...))))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let ((buffer ...)) (save-current-buffer (set-buffer buffer) (if ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--)))))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let ((buf (car --dolist-tail--))) (let* ((v buf)) (save-current-buffer (set-buffer v) (set ... nil))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((previous-button (previous-button project-pos)) (next-button (next-button project-pos))) (cond (previous-button (delete-region (or (next-single-property-change previous-button ...) (point-max)) (point-at-eol)) (if next-button (progn (forward-button 1)))) (next-button (if (> next-button treemacs--projects-end) (progn (set-marker-insertion-type treemacs--projects-end nil))) (delete-region (point-at-bol) (progn (goto-char next-button) (forward-line 0) (point)))) (t (delete-region (point-at-bol) (point-at-eol))))) (if (equal (point-min) prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (setq treemacs--last-highlight nil) (let ((it (treemacs-get-local-window))) (if it (progn (let ((save-selected-window--state (internal--before-with-selected-window it))) (save-current-buffer (unwind-protect (progn ... ...) (internal--after-with-selected-window save-selected-window--state))))))) (if (eq major-mode 'treemacs-mode) (progn (beginning-of-line) (if (eq 'image (car-safe (get-text-property (point) 'display))) (progn (forward-char 1))))) (hl-line-highlight)) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* ((project-path (progn (progn (aref project 2)))) (project-pos (goto-char (gethash (if ... ... project-path) treemacs--project-positions nil))) (prev-project-pos (move-marker (make-marker) (previous-single-char-property-change (point-at-bol) :project))) (next-project-pos (move-marker (make-marker) (next-single-char-property-change (point-at-eol) :project)))) (if (eq 'root-node-open (let* ((button ...)) (get-text-property button :state))) (progn (treemacs--collapse-root-node project-pos t))) (progn (let ((cl-x (treemacs-current-workspace))) (let* ((v cl-x)) (aset v 2 (delete project ...)))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let (...) (save-current-buffer ... ...) (setq --dolist-tail-- ...))))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let ((buf ...)) (let* (...) (save-current-buffer ... ...)) (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((previous-button (previous-button project-pos)) (next-button (next-button project-pos))) (cond (previous-button (delete-region (or ... ...) (point-at-eol)) (if next-button (progn ...))) (next-button (if (> next-button treemacs--projects-end) (progn ...)) (delete-region (point-at-bol) (progn ... ... ...))) (t (delete-region (point-at-bol) (point-at-eol))))) (if (equal (point-min) prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (setq treemacs--last-highlight nil) (let ((it (treemacs-get-local-window))) (if it (progn (let ((save-selected-window--state ...)) (save-current-buffer (unwind-protect ... ...)))))) (if (eq major-mode 'treemacs-mode) (progn (beginning-of-line) (if (eq 'image (car-safe (get-text-property ... ...))) (progn (forward-char 1))))) (hl-line-highlight))) (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* ((project-path (progn (progn ...))) (project-pos (goto-char (gethash ... treemacs--project-positions nil))) (prev-project-pos (move-marker (make-marker) (previous-single-char-property-change ... :project))) (next-project-pos (move-marker (make-marker) (next-single-char-property-change ... :project)))) (if (eq 'root-node-open (let* (...) (get-text-property button :state))) (progn (treemacs--collapse-root-node project-pos t))) (progn (let ((cl-x ...)) (let* (...) (aset v 2 ...))) (let ((--dolist-tail-- ...)) (while --dolist-tail-- (let ... ... ...)))) (let ((--dolist-tail-- (buffer-list))) (while --dolist-tail-- (let (...) (let* ... ...) (setq --dolist-tail-- ...)))) (let ((previous-button (previous-button project-pos)) (next-button (next-button project-pos))) (cond (previous-button (delete-region ... ...) (if next-button ...)) (next-button (if ... ...) (delete-region ... ...)) (t (delete-region ... ...)))) (if (equal (point-min) prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (setq treemacs--last-highlight nil) (let ((it (treemacs-get-local-window))) (if it (progn (let (...) (save-current-buffer ...))))) (if (eq major-mode 'treemacs-mode) (progn (beginning-of-line) (if (eq 'image (car-safe ...)) (progn (forward-char 1))))) (hl-line-highlight)))) (progn (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* ((project-path (progn ...)) (project-pos (goto-char ...)) (prev-project-pos (move-marker ... ...)) (next-project-pos (move-marker ... ...))) (if (eq 'root-node-open (let* ... ...)) (progn (treemacs--collapse-root-node project-pos t))) (progn (let (...) (let* ... ...)) (let (...) (while --dolist-tail-- ...))) (let ((--dolist-tail-- ...)) (while --dolist-tail-- (let ... ... ...))) (let ((previous-button ...) (next-button ...)) (cond (previous-button ... ...) (next-button ... ...) (t ...))) (if (equal (point-min) prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (setq treemacs--last-highlight nil) (let ((it (treemacs-get-local-window))) (if it (progn (let ... ...)))) (if (eq major-mode 'treemacs-mode) (progn (beginning-of-line) (if (eq ... ...) (progn ...)))) (hl-line-highlight))))) (if (buffer-live-p buffer) (progn (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* ((project-path ...) (project-pos ...) (prev-project-pos ...) (next-project-pos ...)) (if (eq ... ...) (progn ...)) (progn (let ... ...) (let ... ...)) (let (...) (while --dolist-tail-- ...)) (let (... ...) (cond ... ... ...)) (if (equal ... prev-project-pos) (goto-char next-project-pos) (goto-char prev-project-pos))) (setq treemacs--last-highlight nil) (let ((it ...)) (if it (progn ...))) (if (eq major-mode 'treemacs-mode) (progn (beginning-of-line) (if ... ...))) (hl-line-highlight)))))) (let ((buffer (progn (progn (aref shelf 1)))) (workspace (progn (progn (aref shelf 2))))) (if (buffer-live-p buffer) (progn (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* (... ... ... ...) (if ... ...) (progn ... ...) (let ... ...) (let ... ...) (if ... ... ...)) (setq treemacs--last-highlight nil) (let (...) (if it ...)) (if (eq major-mode ...) (progn ... ...)) (hl-line-highlight))))))) (let ((shelf x457)) (let ((buffer (progn (progn (aref shelf 1)))) (workspace (progn (progn (aref shelf 2))))) (if (buffer-live-p buffer) (progn (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let (buffer-read-only) (let* ... ... ... ... ... ...) (setq treemacs--last-highlight nil) (let ... ...) (if ... ...) (hl-line-highlight)))))))) (let* ((x457 (cdr-safe x455))) (let ((shelf x457)) (let ((buffer (progn (progn (aref shelf 1)))) (workspace (progn (progn (aref shelf 2))))) (if (buffer-live-p buffer) (progn (let ((treemacs-override-workspace workspace)) (ignore treemacs-override-workspace) (save-current-buffer (set-buffer buffer) (let ... ... ... ... ... ...)))))))) (progn (ignore (consp x455)) (let* ((x457 (cdr-safe x455))) (let ((shelf x457)) (let ((buffer (progn (progn ...))) (workspace (progn (progn ...)))) (if (buffer-live-p buffer) (progn (let (...) (ignore treemacs-override-workspace) (save-current-buffer ... ...)))))))) (let ((x455 (car --dolist-tail--))) (progn (ignore (consp x455)) (let* ((x457 (cdr-safe x455))) (let ((shelf x457)) (let ((buffer (progn ...)) (workspace (progn ...))) (if (buffer-live-p buffer) (progn (let ... ... ...))))))) (setq --dolist-tail-- (cdr --dolist-tail--))) (while --dolist-tail-- (let ((x455 (car --dolist-tail--))) (progn (ignore (consp x455)) (let* ((x457 (cdr-safe x455))) (let ((shelf x457)) (let ((buffer ...) (workspace ...)) (if (buffer-live-p buffer) (progn ...)))))) (setq --dolist-tail-- (cdr --dolist-tail--)))) (let ((--dolist-tail-- treemacs--scope-storage)) (while --dolist-tail-- (let ((x455 (car --dolist-tail--))) (progn (ignore (consp x455)) (let* ((x457 (cdr-safe x455))) (let ((shelf x457)) (let (... ...) (if ... ...))))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (catch '--cl-block-__body__-- (if ignore-last-project-restriction nil (if (>= 1 (length (let ((cl-x ...)) (progn (progn ...))))) (progn (throw '--cl-block-__body__-- (treemacs-pulse-on-failure 'cannot-delete-last-project))))) (if (null project) (progn (throw '--cl-block-__body__-- (treemacs-pulse-on-failure '(invalid-project "Project is nil"))))) (if (stringp project) (progn (setq project (let* ((left (if ... ... ...))) (let (needle) (let (... ... elt it it-index) (ignore it it-index) (while ... ...)) needle))))) (if (null project) (progn (throw '--cl-block-__body__-- (treemacs-pulse-on-failure '(invalid-project "Given path is not in the workspace"))))) (let ((--dolist-tail-- treemacs--scope-storage)) (while --dolist-tail-- (let ((x455 (car --dolist-tail--))) (progn (ignore (consp x455)) (let* ((x457 ...)) (let (...) (let ... ...)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (run-hook-with-args 'treemacs-delete-project-functions project) (treemacs--persist) 'success) treemacs-do-remove-project-from-workspace( ```