(eglot--glob-compile globPattern t t))
watchers))
(dirs-to-watch
- (eglot--directories-matched-by-globs default-directory globs)))
+ (eglot--directories-recursively default-directory)))
(cl-labels
((handle-event
(event)
(when (eq ?! (aref arg 1)) (aset arg 1 ?^))
`(,self () (re-search-forward ,(concat "\\=" arg)) (,next)))
-(defun eglot--files-recursively (&optional dir)
- "Because `directory-files-recursively' isn't complete in 26.3."
- (cons (setq dir (expand-file-name (or dir default-directory)))
- (cl-loop with default-directory = dir
- with completion-regexp-list = '("^[^.]")
- for f in (file-name-all-completions "" dir)
- if (file-directory-p f) append (eglot--files-recursively f)
- else collect (expand-file-name f))))
-
(defun eglot--directories-recursively (&optional dir)
"Because `directory-files-recursively' isn't complete in 26.3."
(cons (setq dir (expand-file-name (or dir default-directory)))
(cl-loop with default-directory = dir
with completion-regexp-list = '("^[^.]")
for f in (file-name-all-completions "" dir)
- if (file-directory-p f) append (eglot--files-recursively f)
- else collect (expand-file-name f))))
-
-(defun eglot--directories-matched-by-globs (dir globs)
- "Discover subdirectories of DIR with files matched by one of GLOBS.
-Each element of GLOBS is either an uncompiled glob-string or a
-compiled glob."
- (setq globs (cl-loop for g in globs
- collect (if (stringp g) (eglot--glob-compile g t t) g)))
- (cl-loop for f in (eglot--files-recursively dir)
- for fdir = (file-name-directory f)
- when (and
- (not (member fdir dirs))
- (cl-loop for g in globs thereis (funcall g f)))
- collect fdir into dirs
- finally (cl-return (delete-dups dirs))))
+ if (file-directory-p f)
+ append (eglot--directories-recursively f))))
\f
;;; Rust-specific