diff --git a/src/emacs/lean-company.el b/src/emacs/lean-company.el index 5a4e851d1..d3858d07b 100644 --- a/src/emacs/lean-company.el +++ b/src/emacs/lean-company.el @@ -57,10 +57,13 @@ (let* ((target-ext (pcase (lean-choose-minor-mode-based-on-extension) (`hott "hlean") (`standard "lean"))) - (lean-files (f-files root-dir - (lambda (file) (equal (f-ext file) target-ext)) - t)) - ;; Relative to project root-dir + (dummy (message "finding files under %s..." root-dir)) + (lean-files (with-timeout (lean-company-import-timeout + (message "finding files under %s... timeout (%S sec)" + root-dir lean-company-import-timeout) nil) + (lean-find-files root-dir + (lambda (file) (equal (f-ext file) target-ext)) + t))) (lean-files-r (--map (f-relative it root-dir) lean-files)) (candidates (--map (s-replace-all `((,(f-path-separator) . ".")) diff --git a/src/emacs/lean-settings.el b/src/emacs/lean-settings.el index 0ed30f718..4d5c24c37 100644 --- a/src/emacs/lean-settings.el +++ b/src/emacs/lean-settings.el @@ -176,6 +176,13 @@ false (nil)." :group 'lean :type 'number) +(defcustom lean-company-import-timeout 1 + "After lean-company-import-timeout (seconds) passed, + company-lean--import stops collecting files. + See the body of company-lean--import-candidates-main" + :group 'lean + :type 'number) + (defcustom lean-keybinding-std-exe1 (kbd "C-c C-x") "Lean Keybinding for std-exe #1" :group 'lean-keybinding :type 'key-sequence)