Skip to content

Commit b55fff0

Browse files
committed
Add option to show current project errors only
1 parent 3bae4a9 commit b55fff0

File tree

1 file changed

+49
-27
lines changed

1 file changed

+49
-27
lines changed

lsp-treemacs.el

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@
109109
"Severity level for `lsp-treemacs-error-list-mode'. 1 (highest) to 3 (lowest)"
110110
:type 'number)
111111

112+
(defcustom lsp-treemacs-error-list-current-project-only t
113+
"List the error list of the current project only if available.
114+
Fallback to list all workspaces if no project root is found."
115+
:type 'boolean
116+
:group 'lsp-treemacs)
117+
112118
(defun lsp-treemacs--open-file-in-mru (file)
113119
(select-window (get-mru-window (selected-frame) nil :not-selected))
114120
(find-file file))
@@ -1202,35 +1208,48 @@ With prefix 2 show both."
12021208
count)))
12031209
(seq-some #'identity)))
12041210

1211+
(defun lsp-treemacs--build-error-list (folders)
1212+
(-keep
1213+
(lambda (folder)
1214+
(when-let ((diags (append (lsp-diagnostics-stats-for folder) ())))
1215+
(when (lsp-treemacs-errors--diags? diags)
1216+
(list :label (format
1217+
(propertize "%s %s %s" 'face 'default)
1218+
(f-filename folder)
1219+
(->> diags
1220+
(-map-indexed
1221+
(lambda (index count)
1222+
(when (and (not (zerop count))
1223+
(<= index lsp-treemacs-error-list-severity))
1224+
(propertize
1225+
(number-to-string count)
1226+
'face (alist-get index lsp-treemacs-file-face-map)))))
1227+
(-filter #'identity)
1228+
(s-join "/"))
1229+
(propertize (f-dirname folder)
1230+
'face 'lsp-lens-face))
1231+
:id folder
1232+
:icon 'root
1233+
:children (-partial #'lsp-treemacs-errors--list-files folder)
1234+
:ret-action (lambda (&rest _)
1235+
(interactive)
1236+
(lsp-treemacs--open-file-in-mru folder))))))
1237+
folders))
1238+
1239+
1240+
(defvar lsp-treemacs--current-project-root nil)
1241+
12051242
(defun lsp-treemacs-errors-list--refresh ()
12061243
(lsp-treemacs-render
1207-
(->> (lsp-session)
1208-
(lsp-session-folders)
1209-
(-keep
1210-
(lambda (folder)
1211-
(when-let ((diags (append (lsp-diagnostics-stats-for folder) ())))
1212-
(when (lsp-treemacs-errors--diags? diags)
1213-
(list :label (format
1214-
(propertize "%s %s %s" 'face 'default)
1215-
(f-filename folder)
1216-
(->> diags
1217-
(-map-indexed
1218-
(lambda (index count)
1219-
(when (and (not (zerop count))
1220-
(<= index lsp-treemacs-error-list-severity))
1221-
(propertize
1222-
(number-to-string count)
1223-
'face (alist-get index lsp-treemacs-file-face-map)))))
1224-
(-filter #'identity)
1225-
(s-join "/"))
1226-
(propertize (f-dirname folder)
1227-
'face 'lsp-lens-face))
1228-
:id folder
1229-
:icon 'root
1230-
:children (-partial #'lsp-treemacs-errors--list-files folder)
1231-
:ret-action (lambda (&rest _)
1232-
(interactive)
1233-
(lsp-treemacs--open-file-in-mru folder))))))))
1244+
(if (and lsp-treemacs--current-project-root
1245+
lsp-treemacs-error-list-current-project-only)
1246+
(->> (lsp-session)
1247+
(lsp-session-folders)
1248+
(--filter (f-equal-p lsp-treemacs--current-project-root it))
1249+
(lsp-treemacs--build-error-list))
1250+
(->> (lsp-session)
1251+
(lsp-session-folders)
1252+
(lsp-treemacs--build-error-list)))
12341253
"Errors List"
12351254
nil
12361255
lsp-treemacs-errors-buffer-name
@@ -1239,6 +1258,9 @@ With prefix 2 show both."
12391258
;;;###autoload
12401259
(defun lsp-treemacs-errors-list ()
12411260
(interactive)
1261+
(setq lsp-treemacs--current-project-root (-some-> (lsp-workspaces)
1262+
cl-first
1263+
(lsp--workspace-root)))
12421264
(-if-let (buffer (get-buffer lsp-treemacs-errors-buffer-name))
12431265
(progn
12441266
(select-window (display-buffer-in-side-window buffer '((side . bottom))))

0 commit comments

Comments
 (0)