summaryrefslogtreecommitdiff
path: root/xmake/core/language/language.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2017-01-05 15:41:13 +0800
committerruki <[email protected]>2017-01-06 17:20:09 +0800
commitac637c7c104bf2bd9269379b15184b44d03e75dd (patch)
tree010c27a3350d17431a686ab52d7e5132fb4067df /xmake/core/language/language.lua
parent61465cbf8df493c13c0adf2adfc985b679933bdd (diff)
add scanner and fix run target
Diffstat (limited to 'xmake/core/language/language.lua')
-rw-r--r--xmake/core/language/language.lua27
1 files changed, 27 insertions, 0 deletions
diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua
index ad5c64367..53daeb093 100644
--- a/xmake/core/language/language.lua
+++ b/xmake/core/language/language.lua
@@ -249,5 +249,32 @@ function language.apis()
return apis
end
+-- get language sourcekinds
+function language.sourcekinds()
+
+ -- attempt to get it from cache
+ if language._SOURCEKINDS then
+ return language._SOURCEKINDS
+ end
+
+ -- load all languages
+ local languages, errors = language.load()
+ if not languages then
+ os.raise(errors)
+ end
+
+ -- merge apis for each language
+ local sourcekinds = {}
+ for name, instance in pairs(languages) do
+ table.join2(sourcekinds, table.wrap(instance:sourcekinds()))
+ end
+
+ -- cache it
+ language._SOURCEKINDS = table.unique(sourcekinds)
+
+ -- ok
+ return language._SOURCEKINDS
+end
+
-- return module
return language