diff options
| author | ruki <[email protected]> | 2016-12-20 09:16:03 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-01-06 17:20:08 +0800 |
| commit | f0c81e8d818b3d0d5177ac4b39ff59562f133886 (patch) | |
| tree | b687c5a34f1543492605ce7d23f6f36f5aaaedf3 /xmake/core/language/language.lua | |
| parent | 42ff9b62aa8ef799d8a9cfc064a40311671bee54 (diff) | |
load language apis
Diffstat (limited to 'xmake/core/language/language.lua')
| -rw-r--r-- | xmake/core/language/language.lua | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua index 1b042d871..43b77898e 100644 --- a/xmake/core/language/language.lua +++ b/xmake/core/language/language.lua @@ -139,7 +139,7 @@ end function language._directory() -- the directory - return path.join(xmake._PROGRAM_DIR, "languages")) + return path.join(xmake._PROGRAM_DIR, "languages") end -- the interpreter @@ -160,6 +160,9 @@ function language._interpreter() -- register api: on_load() interp:api_register_on_script("language", "load") + -- register api: set_values() to language + interp:api_register_set_values("language", "sourcekinds") + -- save interpreter language._INTERPRETER = interp @@ -172,7 +175,7 @@ function language.load(name) -- load all languages if not name then - for _, name in ipairs(table.wrap(os.match(language._directory(), true))) do + for _, name in ipairs(table.wrap(os.match(path.join(language._directory(), "*"), true))) do local instance, errors = language.load(path.basename(name)) if not instance then return nil, errors @@ -263,5 +266,30 @@ function language.load_from_kind(kind) return result end +-- load the language apis +function language.apis() + + -- load all languages + local languages, errors = language.load() + if not languages then + return nil, errors + end + + -- merge apis for each language + local apis = {values = {}, pathes = {}} + for _, instance in pairs(languages) do + local instance_apis = instance:get("apis") + if instance_apis then + table.join2(apis.values, table.wrap(instance_apis.values)) + table.join2(apis.pathes, table.wrap(instance_apis.pathes)) + end + end + apis.values = table.unique(apis.values) + apis.pathes = table.unique(apis.pathes) + + -- ok + return apis +end + -- return module return language |
