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.
This commit is contained in:
Henrik Lissner 2019-08-23 01:49:10 -04:00
parent ee81d0533a
commit e38dad13c6
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -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))))))))