diff --git a/modules/lang/lua/autoload/lua.el b/modules/lang/lua/autoload/lua.el index 53f23b758..4f1236771 100644 --- a/modules/lang/lua/autoload/lua.el +++ b/modules/lang/lua/autoload/lua.el @@ -25,14 +25,23 @@ ;;;###autoload (defun +lua-love-project-root () - "Returns the directory where a main.lua exists. + "Returns the directory where a main.lua or main.moon exists. Returns nil if 'love' executable can't be found." (when (executable-find "love") - (or (and (projectile-locate-dominating-file default-directory "main.lua") - (when-let (root (projectile-locate-dominating-file default-directory "src/main.lua")) - (expand-file-name "src" root))) - (and (featurep! +moonscript) - (projectile-locate-dominating-file default-directory "main.moon") - (when-let (root (projectile-locate-dominating-file default-directory "src/main.moon")) - (expand-file-name "src" root)))))) + (if (doom-project-p) + (file-name-directory + (or (project-file-exists-p! (or "main.lua" "src/main.lua")) + (and (featurep! +moonscript) + (project-file-exists-p! (or "main.moon" "src/main.moon"))) + "")) + ;; Since Love2D games are likely to be prototypes, they may not be in a + ;; well-formed project as far as projecitle is concerned, so we search for + ;; main.lua/main.moon up the file tree as a backup. + (or (projectile-locate-dominating-file default-directory "main.lua") + (when-let (root (projectile-locate-dominating-file default-directory "src/main.lua")) + (expand-file-name "src" root)) + (and (featurep! +moonscript) + (or (projectile-locate-dominating-file default-directory "main.moon") + (when-let (root (projectile-locate-dominating-file default-directory "src/main.moon")) + (expand-file-name "src" root))))))))