From e38dad13c68648cbecd8b8381d8fedab606d3e1f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 23 Aug 2019 01:49:10 -0400 Subject: [PATCH] lang/lua: fix +lua-love-project-root Its former logic would only return a correct path if both main.{lua,moon} and src/main.{lua,moon} exist within the same project, which is very unlikely. --- modules/lang/lua/autoload/lua.el | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) 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))))))))