Function: eca--session-remove-workspace-folder
eca--session-remove-workspace-folder is a natively compiled function
defined in eca-util.el.
Signature
(eca--session-remove-workspace-folder SESSION FOLDER)
Documentation
Remove FOLDER from SESSION's workspace-folders and notify the server.
Refuses to remove the last remaining folder, since the Emacs client
resolves buffers to sessions by matching against workspace-folders and
an empty list would make the session unreachable. In merged worktree
mode, a removed folder whose git-common-dir still matches another
folder in the session can be auto-re-added by eca-session the next
time a buffer under it is visited.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-util.el
(defun eca--session-remove-workspace-folder (session folder)
"Remove FOLDER from SESSION's workspace-folders and notify the server.
Refuses to remove the last remaining folder, since the Emacs client
resolves buffers to sessions by matching against workspace-folders and
an empty list would make the session unreachable. In `merged' worktree
mode, a removed folder whose git-common-dir still matches another
folder in the session can be auto-re-added by `eca-session' the next
time a buffer under it is visited."
(let* ((folder (directory-file-name (expand-file-name folder)))
(folders (eca--session-workspace-folders session)))
(cond
((not (--first (string= it folder) folders))
(eca-warn "Workspace folder not found: %s" folder))
((<= (length folders) 1)
(user-error "Cannot remove the last workspace folder"))
(t
(setf (eca--session-workspace-folders session)
(cl-remove-if (lambda (it) (string= it folder)) folders))
(eca-api-notify
session
:method "workspace/didChangeWorkspaceFolders"
:params (list :event
(list :added []
:removed (vector
(list :uri (eca--path-to-uri folder)
:name (file-name-nondirectory (directory-file-name folder)))))))
(eca-info "Removed workspace folder: %s" folder)))))