├── .gitignore ├── images └── erlang.png ├── .vscodeignore ├── tsconfig.json ├── .vscode ├── settings.json ├── launch.json └── tasks.json ├── language-configuration.json ├── snippets └── erlang.json ├── LICENSE.md ├── README.md ├── package.json ├── src ├── completion_provider.ts └── extension.ts ├── priv └── erlang-libs.json └── syntaxes └── erlang.tmLanguage /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules -------------------------------------------------------------------------------- /images/erlang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuce/erlang-vscode/HEAD/images/erlang.png -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | typings/** 3 | out/test/** 4 | test/** 5 | src/** 6 | **/*.map 7 | .gitignore 8 | tsconfig.json 9 | vsc-extension-quickstart.md 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es2015", 5 | "outDir": "out", 6 | "sourceMap": true, 7 | // "noLib": true, 8 | "rootDir": ".", 9 | "lib": [ 10 | "es2015" 11 | ] 12 | }, 13 | "exclude": [ 14 | "node_modules" 15 | ] 16 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | "typescript.tsdk": "./node_modules/typescript/lib" // we want to use the TS server from our node_modules folder to control its version 10 | } -------------------------------------------------------------------------------- /language-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": { 3 | "lineComment": "%" 4 | }, 5 | "brackets": [ 6 | ["{", "}"], 7 | ["[", "]"], 8 | ["(", ")"], 9 | ["<<", ">>"] 10 | ], 11 | "autoClosingPairs": [ 12 | { "open": "{", "close": "}" }, 13 | { "open": "[", "close": "]" }, 14 | { "open": "(", "close": ")" }, 15 | { "open": "<<", "close": ">>", "notIn": ["string", "comment"] }, 16 | { "open": "\"", "close": "\"", "notIn": ["string"] }, 17 | { "open": "'", "close": "'", "notIn": ["string", "comment"] } 18 | ] 19 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.1.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}" ], 11 | "stopOnEntry": false, 12 | "sourceMaps": true, 13 | "outDir": "${workspaceRoot}/out/src", 14 | "preLaunchTask": "npm" 15 | }, 16 | { 17 | "name": "Launch Tests", 18 | "type": "extensionHost", 19 | "request": "launch", 20 | "runtimeExecutable": "${execPath}", 21 | "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ], 22 | "stopOnEntry": false, 23 | "sourceMaps": true, 24 | "outDir": "${workspaceRoot}/out/test", 25 | "preLaunchTask": "npm" 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // Available variables which can be used inside of strings. 2 | // ${workspaceRoot}: the root folder of the team 3 | // ${file}: the current opened file 4 | // ${fileBasename}: the current opened file's basename 5 | // ${fileDirname}: the current opened file's dirname 6 | // ${fileExtname}: the current opened file's extension 7 | // ${cwd}: the current working directory of the spawned process 8 | 9 | // A task runner that calls a custom npm script that compiles the extension. 10 | { 11 | "version": "0.1.0", 12 | 13 | // we want to run npm 14 | "command": "npm", 15 | 16 | // the command is a shell script 17 | "isShellCommand": true, 18 | 19 | // show the output window only if unrecognized errors occur. 20 | "showOutput": "silent", 21 | 22 | // we run the custom script "compile" as defined in package.json 23 | "args": ["run", "compile", "--loglevel", "silent"], 24 | 25 | // The tsc compiler is started in watching mode 26 | "isWatching": true, 27 | 28 | // use the standard tsc in watch mode problem matcher to find compile problems in the output. 29 | "problemMatcher": "$tsc-watch" 30 | } -------------------------------------------------------------------------------- /snippets/erlang.json: -------------------------------------------------------------------------------- 1 | { 2 | "receive": { 3 | "prefix": "rec", 4 | "body": [ 5 | "receive", 6 | "\t$1 ->", 7 | "\t\t$2", 8 | "end$3" 9 | ], 10 | "description": "receive block" 11 | }, 12 | "receive with after": { 13 | "prefix": "reca", 14 | "body": [ 15 | "receive", 16 | "\t$1 ->", 17 | "\t\t$2", 18 | "after", 19 | "\t$3 ->", 20 | "\t\t$4", 21 | "end$5" 22 | ], 23 | "description": "receive block with after" 24 | }, 25 | "case": { 26 | "prefix": "case", 27 | "body": [ 28 | "case $1 of", 29 | "\t$2 ->", 30 | "\t\t$3", 31 | "end$4" 32 | ], 33 | "description": "case block" 34 | }, 35 | "if": { 36 | "prefix": "if", 37 | "body": [ 38 | "if", 39 | "\t$1 ->", 40 | "\t\t$2", 41 | "\ttrue ->", 42 | "\t\t$3", 43 | "end$4" 44 | ], 45 | "description": "if block" 46 | }, 47 | "try": { 48 | "prefix": "try", 49 | "body": [ 50 | "try $1 of", 51 | "\t$1 ->", 52 | "\t\t$2", 53 | "catch", 54 | "\t$3 ->", 55 | "\t\t$4", 56 | "end$5" 57 | ], 58 | "description": "try .. catch block" 59 | } 60 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Yuce Tekol . 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | * The names of its contributors may not be used to endorse or promote 16 | products derived from this software without specific prior written 17 | permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Erlang/OTP Support for Visual Studio Code 2 | 3 | This extension provides Erlang/OTP support for [Visual Studio Code](https://code.visualstudio.com/) and is available at the [Marketplace](https://marketplace.visualstudio.com/items?itemName=yuce.erlang-otp). 4 | 5 | ## News 6 | 7 | * 0.2.5 (*2018-02-12*): 8 | * Updated auto-indent. 9 | * Updated dependencies. 10 | * 0.2.4 (*2017-06-23*): 11 | * Fixed receive ... after auto-indent and snippet. 12 | * 0.2.3 (*2017-06-21*): 13 | * Fixed `erlang.autoIndent` preference item. 14 | * 0.2.2 (*2017-06-18*): 15 | * Improved auto-indent. This feature is enabled by default; in order to disable it, set `erlang.autoIndent` to `false`. 16 | * 2016-02-17: 17 | * Experimental module name auto-completion (*currently Erlang standard library modules only*) 18 | * 2016-02-16: 19 | * Added experimental support for auto-completion of Erlang standard library module functions. Enable it with setting `erlang.enableExperimentalAutoComplete` to `true` in your user settings and restart VSCode. 20 | 21 | ## Features 22 | 23 | * Syntax highlighting 24 | * Auto-indent 25 | * Snippets 26 | * Auto-complete (*experimental*) 27 | 28 | ## Work In Progress 29 | 30 | This extension is still WIP, feel free to submit ideas/bug fixes 31 | on [Github](https://github.com/yuce/erlang-vscode/issues). 32 | 33 | ## Snippets 34 | 35 | * `rec`: receive block 36 | * `reca`: receive block with after 37 | * `case`: case block 38 | * `if`: if block 39 | * `try`: try .. catch block 40 | 41 | You can submit more snippets on [Github](https://github.com/yuce/erlang-vscode/issues). 42 | 43 | ## Thanks 44 | 45 | * Erlang syntax file is based on: https://github.com/pgourlain/vscode_erlang. 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "erlang-otp", 3 | "displayName": "Erlang/OTP", 4 | "description": "Erlang/OTP support with syntax highlighting, auto-indent and snippets", 5 | "version": "0.2.5", 6 | "author": { 7 | "name": "Yuce Tekol" 8 | }, 9 | "publisher": "yuce", 10 | "license": "SEE LICENSE IN LICENSE.md", 11 | "engines": { 12 | "vscode": ">=1.30.0" 13 | }, 14 | "categories": [ 15 | "Programming Languages", 16 | "Snippets" 17 | ], 18 | "activationEvents": [ 19 | "onLanguage:erlang" 20 | ], 21 | "main": "./out/src/extension", 22 | "contributes": { 23 | "languages": [ 24 | { 25 | "id": "erlang", 26 | "aliases": [ 27 | "Erlang", 28 | "erlang" 29 | ], 30 | "extensions": [ 31 | ".erl", 32 | ".hrl", 33 | ".yrl", 34 | ".escript", 35 | ".app.src", 36 | ".config" 37 | ], 38 | "filenames": [ 39 | "rebar.lock" 40 | ] 41 | } 42 | ], 43 | "grammars": [ 44 | { 45 | "language": "erlang", 46 | "scopeName": "source.erlang", 47 | "path": "./syntaxes/erlang.tmLanguage" 48 | } 49 | ], 50 | "snippets": [ 51 | { 52 | "language": "erlang", 53 | "path": "./snippets/erlang.json" 54 | } 55 | ], 56 | "configuration": { 57 | "title": "Erlang configuration", 58 | "properties": { 59 | "erlang.enableExperimentalAutoComplete": { 60 | "type": "boolean", 61 | "default": false, 62 | "description": "Enables experimental auto completion for Erlang standard library" 63 | }, 64 | "erlang.autoIndent": { 65 | "type": "boolean", 66 | "default": true, 67 | "description": "Enables auto indent" 68 | } 69 | } 70 | } 71 | }, 72 | "scripts": { 73 | "vscode:prepublish": "tsc -p ./", 74 | "compile": "tsc -watch -p ./", 75 | "postinstall": "node ./node_modules/vscode/bin/install" 76 | }, 77 | "devDependencies": { 78 | "@types/node": "^6.0.83", 79 | "typescript": ">=3.0.0", 80 | "vscode": "^1.1.28" 81 | }, 82 | "repository": { 83 | "type": "git", 84 | "url": "https://github.com/yuce/erlang-vscode" 85 | }, 86 | "icon": "images/erlang.png", 87 | "bugs": { 88 | "url": "https://github.com/yuce/erlang-vscode/issues" 89 | }, 90 | "homepage": "https://github.com/yuce/erlang-vscode/README.md" 91 | } 92 | -------------------------------------------------------------------------------- /src/completion_provider.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | 4 | import {CompletionItemProvider, TextDocument, Position, CancellationToken, 5 | CompletionItem, CompletionItemKind} from 'vscode'; 6 | 7 | let fs = require('fs'); 8 | 9 | const RE_MODULE = /(\w+):$/; 10 | 11 | interface FunctionCompletionData { 12 | name: string; 13 | // detail: string; 14 | } 15 | 16 | export class ErlangCompletionProvider implements CompletionItemProvider { 17 | private modules:any = null; 18 | private moduleNames: string[] = null; 19 | private genericCompletionItems: CompletionItem[] = null; 20 | 21 | constructor(private completionPath: string) {} 22 | 23 | public provideCompletionItems(doc: TextDocument, 24 | pos: Position, 25 | token: CancellationToken): Thenable 26 | { 27 | return new Promise((resolve, reject) => { 28 | const line = doc.lineAt(pos.line); 29 | const m = RE_MODULE.exec(line.text.substring(0, pos.character)); 30 | if (this.modules === null) { 31 | this.readCompletionJson(this.completionPath, modules => { 32 | this.modules = modules; 33 | (m === null)? 34 | this.resolveModuleNames(resolve) 35 | : this.resolveFunNames(m[1], resolve); 36 | }); 37 | } 38 | else { 39 | (m === null)? 40 | this.resolveModuleNames(resolve) 41 | : this.resolveFunNames(m[1], resolve); 42 | } 43 | }); 44 | } 45 | 46 | private resolveFunNames(module, resolve) { 47 | resolve(this.makeModuleFunsCompletion(module)); 48 | } 49 | 50 | private resolveModuleNames(resolve) { 51 | if (!this.genericCompletionItems) { 52 | this.genericCompletionItems = this.makeGenericCompletion(); 53 | } 54 | resolve(this.genericCompletionItems); 55 | } 56 | 57 | private makeFunctionCompletionItem(name: string): CompletionItem { 58 | const item = new CompletionItem(name); 59 | // item.documentation = cd.detail; 60 | item.kind = CompletionItemKind.Function; 61 | return item; 62 | } 63 | 64 | private makeModuleNameCompletionItem(name: string): CompletionItem { 65 | const item = new CompletionItem(name); 66 | item.kind = CompletionItemKind.Module; 67 | return item; 68 | } 69 | 70 | private makeModuleFunsCompletion(module: string): CompletionItem[] { 71 | const moduleFuns = this.modules[module] || []; 72 | return moduleFuns.map(name => { 73 | return this.makeFunctionCompletionItem(name); 74 | }); 75 | } 76 | 77 | private makeGenericCompletion(): CompletionItem[] { 78 | const modules = this.modules || {}; 79 | const names = []; 80 | for (let k in modules) { 81 | names.push(k); 82 | } 83 | names.sort(); 84 | return names.map(name => { 85 | return this.makeModuleNameCompletionItem(name); 86 | }); 87 | } 88 | 89 | private readCompletionJson(filename: string, done: Function): any { 90 | fs.readFile(filename, (err, data) => { 91 | if (err) { 92 | console.log(`Cannot read: ${filename}`); 93 | done({}); 94 | } 95 | else { 96 | let d: any = JSON.parse(data); 97 | done(d); 98 | } 99 | }); 100 | } 101 | } -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016, Yuce Tekol . 2 | // All rights reserved. 3 | 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are 6 | // met: 7 | 8 | // * Redistributions of source code must retain the above copyright 9 | // notice, this list of conditions and the following disclaimer. 10 | 11 | // * Redistributions in binary form must reproduce the above copyright 12 | // notice, this list of conditions and the following disclaimer in the 13 | // documentation and/or other materials provided with the distribution. 14 | 15 | // * The names of its contributors may not be used to endorse or promote 16 | // products derived from this software without specific prior written 17 | // permission. 18 | 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 'use strict'; 32 | import {ExtensionContext, Disposable, workspace, window} from 'vscode'; 33 | import {languages, Hover, IndentAction, LanguageConfiguration} from 'vscode'; 34 | import {ErlangCompletionProvider} from './completion_provider'; 35 | 36 | export function activate(ctx: ExtensionContext) { 37 | let config = workspace.getConfiguration('erlang'); 38 | let languageConfiguration: LanguageConfiguration = { 39 | comments: { 40 | lineComment: '%' 41 | }, 42 | brackets: [ 43 | ['{', '}'], 44 | ['[', ']'], 45 | ['(', ')'], 46 | ['<<', '>>'] 47 | ], 48 | __characterPairSupport: { 49 | autoClosingPairs: [ 50 | { open: '{', close: '}' }, 51 | { open: '[', close: ']' }, 52 | { open: '(', close: ')' }, 53 | { open: '<<', close: '>>', notIn: ['string', 'comment'] }, 54 | { open: '"', close: '"', notIn: ['string'] }, 55 | { open: '\'', close: '\'', notIn: ['string', 'comment'] } 56 | ] 57 | } 58 | } 59 | 60 | if (config['autoIndent']) { 61 | languageConfiguration['indentationRules'] = { 62 | increaseIndentPattern: /^\s*([^%]*->|receive|if|fun|case\s+.*\s+of|try\s+.*\s+of|catch|after)\s*$/, 63 | // decreaseIndentPattern: /\s+(?:end[.,;]?|catch|after)\s*$/ 64 | decreaseIndentPattern: /\s+(?:end[.,;]?|catch|after)\s*$/ 65 | // decreaseIndentPattern: null 66 | } 67 | languageConfiguration['onEnterRules'] = [ 68 | { 69 | beforeText: /^\s*([^%]*->|receive|if|fun|case\s+.*\s+of|try\s+.*\s+of)\s*$/, 70 | action: { 71 | indentAction: IndentAction.Indent 72 | } 73 | }, 74 | { 75 | beforeText: /^\s*((?!(end|catch|after))[^,])*$/, 76 | action: { 77 | indentAction: IndentAction.Outdent 78 | } 79 | } 80 | ] 81 | } 82 | 83 | languages.setLanguageConfiguration('erlang', languageConfiguration); 84 | 85 | // enable auto completion 86 | if (config['enableExperimentalAutoComplete']) { 87 | let completionJsonPath = ctx.asAbsolutePath("./priv/erlang-libs.json"); 88 | ctx.subscriptions.push(languages.registerCompletionItemProvider({ 89 | language: 'erlang' 90 | }, new ErlangCompletionProvider(completionJsonPath), ':')); 91 | } 92 | } 93 | 94 | export function deactivate() { 95 | } 96 | 97 | -------------------------------------------------------------------------------- /priv/erlang-libs.json: -------------------------------------------------------------------------------- 1 | {"http_uri":["decode","encode","parse","scheme_defaults"],"os_sup":["code_change","disable","enable","error_report","handle_call","handle_cast","handle_info","init","param_default","param_type","start","start_link","stop","terminate"],"application":["ensure_all_started","ensure_started","get_all_env","get_all_key","get_application","get_env","get_key","info","load","loaded_applications","permit","set_env","start","start_boot","start_type","stop","takeover","unload","unset_env","which_applications"],"httpd":["block","get_admin_state","get_status","get_usage_state","load","load_mime_types","multi_restart","multi_start","multi_start_link","multi_stop","parse_query","restart","start","start2","start_child","start_link","start_link2","stop","stop2","stop_child","unblock","verbosity"],"erl_ddll":["demonitor","format_error","format_error_int","info","load","load_driver","loaded_drivers","monitor","reload","reload_driver","start","stop","try_load","try_unload","unload","unload_driver"],"systools":["compile_rel","make_relup","make_script","make_tar","script2boot"],"proc_lib":["format","hibernate","init_ack","init_p","initial_call","spawn","spawn_link","spawn_opt","start","start_link","stop","translate_initial_call","wake_up"],"overload":["format_status","get_overload_info","handle_call","handle_info","init","request","set_config_data","start_link","terminate"],"erl_lint":["bool_option","exprs","exprs_opt","format_error","is_guard_expr","is_guard_test","is_pattern_expr","modify_line","module","used_vars","value_option"],"disk_log":["accessible_logs","alog","alog_terms","balog","balog_terms","bchunk","block","blog","blog_terms","breopen","btruncate","change_header","change_notify","change_size","chunk","chunk_info","chunk_step","close","do_info","do_log","do_sync","format_error","ichunk_end","inc_wrap_file","info","init","internal_open","istart_link","lclose","ll_close","ll_open","log","log_terms","open","pid2name","reopen","start","sync","system_code_change","system_continue","system_terminate","truncate","unblock"],"dict":["append","append_list","erase","fetch","fetch_keys","filter","find","fold","from_list","is_empty","is_key","map","merge","new","size","store","to_list","update","update_counter"],"error_handler":["breakpoint","raise_undef_exception","stub_function","undefined_function","undefined_lambda"],"code":["add_path","add_patha","add_paths","add_pathsa","add_pathsz","add_pathz","all_loaded","clash","compiler_dir","del_path","delete","ensure_loaded","get_chunk","get_mode","get_object_code","get_path","is_loaded","is_module_native","is_sticky","lib_dir","load_abs","load_binary","load_file","load_native_partial","load_native_sticky","make_stub_module","module_md5","objfile_extension","priv_dir","purge","rehash","replace_path","root_dir","set_path","set_primary_archive","soft_purge","start_link","stick_dir","stick_mod","stop","unstick_dir","unstick_mod","where_is_file","which"],"sofs":["a_function","canonical_relation","composite","constant_function","converse","difference","digraph_to_family","domain","drestriction","empty_set","extension","fam2rel","family","family_difference","family_domain","family_field","family_intersection","family_projection","family_range","family_specification","family_to_digraph","family_to_relation","family_union","field","from_external","from_sets","from_term","image","intersection","intersection_of_family","inverse","inverse_image","is_a_function","is_disjoint","is_empty_set","is_equal","is_set","is_sofs_set","is_subset","is_type","join","multiple_relative_product","no_elements","partition","partition_family","product","projection","range","rel2fam","relation","relation_to_family","relative_product","relative_product1","restriction","set","specification","strict_relation","substitution","symdiff","symmetric_partition","to_external","to_sets","type","union","union_of_family","weak_relation"],"gen_fsm":["cancel_timer","enter_loop","format_status","init_it","reply","send_all_state_event","send_event","send_event_after","start","start_link","start_timer","stop","sync_send_all_state_event","sync_send_event","system_code_change","system_continue","system_get_state","system_replace_state","system_terminate","wake_hib"],"log_mf_h":["code_change","handle_call","handle_event","handle_info","init","terminate"],"maps":["filter","find","fold","from_list","get","is_key","keys","map","merge","new","put","remove","size","to_list","update","values","with","without"],"gs":["arc","assq","button","canvas","checkbutton","config","create","create_tree","creation_error","destroy","editor","entry","error","foreach","frame","get_id","grid","gridline","image","info","is_id","label","line","listbox","menu","menubar","menubutton","menuitem","message","oval","pair","polygon","prompter","radiobutton","read","rectangle","scale","scrollbar","start","stop","text","val","window"],"gen_tcp":["accept","close","connect","controlling_process","fdopen","listen","recv","send","shutdown","unrecv"],"ssl":["cipher_suites","clear_pem_cache","close","connect","connection_info","connection_information","controlling_process","format_error","getopts","handle_options","listen","negotiated_next_protocol","negotiated_protocol","peercert","peername","prf","random_bytes","recv","renegotiate","send","session_info","setopts","shutdown","sockname","ssl_accept","start","stop","suite_definition","transport_accept","versions"],"gb_sets":["add","add_element","balance","del_element","delete","delete_any","difference","empty","filter","fold","from_list","from_ordset","insert","intersection","is_disjoint","is_element","is_empty","is_member","is_set","is_subset","iterator","iterator_from","largest","new","next","singleton","size","smallest","subtract","take_largest","take_smallest","to_list","union"],"inets":["disable_trace","enable_trace","print_version_info","report_event","service_names","services","services_info","set_trace","start","stop","versions"],"lib":["error_message","eval_str","flush_receive","format_call","format_exception","format_fun","format_stacktrace","nonl","progname","send","sendw"],"release_handler":["check_install_release","code_change","create_RELEASES","do_copy_file","do_copy_files","do_ensure_RELEASES","do_remove_files","do_rename_files","do_write_file","do_write_release","downgrade_app","downgrade_script","eval_appup_script","handle_call","handle_cast","handle_info","init","install_file","install_release","make_permanent","new_emulator_upgrade","reboot_old_release","remove_file","remove_release","set_removed","set_unpacked","start_link","terminate","unpack_release","upgrade_app","upgrade_script","which_releases"],"supervisor":["check_childspecs","code_change","count_children","delete_child","get_childspec","handle_call","handle_cast","handle_info","init","restart_child","start_child","start_link","terminate","terminate_child","try_again_restart","which_children"],"rand":["export_seed","export_seed_s","normal","normal_s","seed","seed_s","uniform","uniform_s"],"global_group":["code_change","config_scan","get_own_nodes","get_own_nodes_with_errors","global_groups","global_groups_added","global_groups_changed","global_groups_removed","handle_call","handle_cast","handle_info","info","init","monitor_nodes","ng_add_check","own_nodes","publish_on_nodes","registered_names","registered_names_test","send","send_test","start","start_link","stop","sync","sync_init","terminate","whereis_name","whereis_name_test"],"ftp":["account","append","append_bin","append_chunk","append_chunk_end","append_chunk_start","cd","close","code_change","delete","formaterror","handle_call","handle_cast","handle_info","help","init","lcd","lpwd","ls","mkdir","nlist","open","pwd","recv","recv_bin","recv_chunk","recv_chunk_start","rename","rmdir","send","send_bin","send_chunk","send_chunk_end","send_chunk_start","terminate","type","user"],"alarm_handler":["add_alarm_handler","clear_alarm","delete_alarm_handler","get_alarms","handle_call","handle_event","handle_info","init","set_alarm","start_link","terminate"],"error_logger":["add_report_handler","delete_report_handler","error_info","error_msg","error_report","format","handle_call","handle_event","handle_info","info_msg","info_report","init","logfile","start","start_link","swap_handler","terminate","tty","warning_map","warning_msg","warning_report"],"httpd_socket":["accept","active_once","close","config","controlling_process","deliver","listen","peername","recv","resolve","send","start"],"beam_lib":["all_chunks","build_module","chunks","clear_crypto_key_fun","cmp","cmp_dirs","code_change","crypto_key_fun","diff_dirs","format_error","get_crypto_key","handle_call","handle_cast","handle_info","info","init","make_crypto_key","md5","strip","strip_files","strip_release","terminate","version"],"ssh_sftpd":["handle_msg","handle_ssh_msg","init","listen","stop","subsystem_spec","terminate"],"filename":["absname","absname_join","append","basename","dirname","extension","find_src","flatten","join","nativename","pathtype","rootname","split"],"slave":["pseudo","relay","slave_start","start","start_link","stop","wait_for_master_to_die","wait_for_slave"],"ordsets":["add_element","del_element","filter","fold","from_list","intersection","is_disjoint","is_element","is_set","is_subset","new","size","subtract","to_list","union"],"mnesia_registry":["create_table","init","start_dump","start_restore"],"re":["compile","grun","inspect","replace","run","split","ucompile","urun"],"inet_res":["dns_msg","getbyname","getbyname_tm","gethostbyaddr","gethostbyaddr_tm","gethostbyname","gethostbyname_tm","lookup","nnslookup","nslookup","resolve"],"mod_auth":["add_group_member","add_user","delete_group","delete_group_member","delete_user","do","get_user","list_group_members","list_groups","list_users","load","remove","store","update_password"],"orddict":["append","append_list","erase","fetch","fetch_keys","filter","find","fold","from_list","is_empty","is_key","map","merge","new","size","store","to_list","update","update_counter"],"ssh_sftp":["apread","apwrite","aread","attr_to_info","awrite","close","code_change","del_dir","delete","get_file_info","handle_call","handle_cast","handle_msg","handle_ssh_msg","info_to_attr","init","list_dir","make_dir","make_symlink","open","open_tar","opendir","position","pread","pwrite","read","read_file","read_file_info","read_link","read_link_info","readdir","real_path","recv_window","rename","send_window","start_channel","stop_channel","terminate","write","write_file","write_file_info"],"array":["default","fix","foldl","foldr","from_list","from_orddict","get","is_array","is_fix","map","new","relax","reset","resize","set","size","sparse_foldl","sparse_foldr","sparse_map","sparse_size","sparse_to_list","sparse_to_orddict","to_list","to_orddict"],"os_mon_mib":["disk_table","disk_threshold","get_disks","get_load","init","load","load_table","mem_proc_mark","mem_sys_mark","stop","unload","update_disk_table","update_load_table"],"unicode":["bin_is_7bit","bom_to_encoding","characters_to_binary","characters_to_binary_int","characters_to_list","characters_to_list_int","encoding_to_bom"],"diameter":["add_transport","call","origin_state_id","remove_transport","service_info","services","session_id","start","start_service","stop","stop_service","subscribe","unsubscribe"],"crypto":["aes_cbc_128_decrypt","aes_cbc_128_encrypt","aes_cbc_256_decrypt","aes_cbc_256_encrypt","aes_cbc_ivec","aes_cfb_128_decrypt","aes_cfb_128_encrypt","aes_ctr_decrypt","aes_ctr_encrypt","aes_ctr_stream_decrypt","aes_ctr_stream_encrypt","aes_ctr_stream_init","block_decrypt","block_encrypt","blowfish_cbc_decrypt","blowfish_cbc_encrypt","blowfish_cfb64_decrypt","blowfish_cfb64_encrypt","blowfish_ecb_decrypt","blowfish_ecb_encrypt","blowfish_ofb64_encrypt","bytes_to_integer","compute_key","des3_cbc_decrypt","des3_cbc_encrypt","des3_cfb_decrypt","des3_cfb_encrypt","des_cbc_decrypt","des_cbc_encrypt","des_cbc_ivec","des_cfb_decrypt","des_cfb_encrypt","des_cfb_ivec","des_ecb_decrypt","des_ecb_encrypt","des_ede3_cbc_decrypt","des_ede3_cbc_encrypt","dh_check","dh_compute_key","dh_generate_key","dh_generate_parameters","dss_sign","dss_verify","ec_curve","ec_curves","erlint","exor","generate_key","hash","hash_final","hash_init","hash_update","hmac","hmac_final","hmac_final_n","hmac_init","hmac_update","info","info_lib","md4","md4_final","md4_init","md4_update","md5","md5_final","md5_init","md5_mac","md5_mac_96","md5_update","mod_exp","mod_pow","mpint","next_iv","private_decrypt","private_encrypt","public_decrypt","public_encrypt","rand_bytes","rand_seed","rand_uniform","rc2_40_cbc_decrypt","rc2_40_cbc_encrypt","rc2_cbc_decrypt","rc2_cbc_encrypt","rc4_encrypt","rc4_encrypt_with_state","rc4_set_key","rsa_private_decrypt","rsa_private_encrypt","rsa_public_decrypt","rsa_public_encrypt","rsa_sign","rsa_verify","sha","sha_final","sha_init","sha_mac","sha_mac_96","sha_update","sign","start","stop","stream_decrypt","stream_encrypt","stream_init","strong_rand_bytes","strong_rand_mpint","supports","verify","version"],"win32reg":["change_key","change_key_create","close","current_key","delete_key","delete_value","expand","format_error","open","set_value","sub_keys","value","values"],"erl_scan":["attributes_info","category","column","continuation_location","end_location","format_error","line","location","reserved_word","set_attribute","string","symbol","text","token_info","tokens"],"base64":["decode","decode_to_string","encode","encode_to_string","mime_decode","mime_decode_to_string"],"erl_pp":["attribute","expr","exprs","form","function","guard"],"calendar":["date_to_gregorian_days","datetime_to_gregorian_seconds","day_of_the_week","gregorian_days_to_date","gregorian_seconds_to_datetime","is_leap_year","iso_week_number","last_day_of_the_month","local_time","local_time_to_universal_time","local_time_to_universal_time_dst","now_to_datetime","now_to_local_time","now_to_universal_time","seconds_to_daystime","seconds_to_time","time_difference","time_to_seconds","universal_time","universal_time_to_local_time","valid_date"],"timer":["apply_after","apply_interval","cancel","code_change","exit_after","get_status","handle_call","handle_cast","handle_info","hms","hours","init","kill_after","minutes","now_diff","seconds","send_after","send_interval","sleep","start","start_link","tc","terminate"],"odbc":["code_change","commit","connect","describe_table","disconnect","first","handle_call","handle_cast","handle_info","init","last","next","param_query","prev","select","select_count","sql_query","start","start_link_sup","stop","terminate"],"mod_security":["block_user","do","list_auth_users","list_blocked_users","load","remove","store","unblock_user"],"epp":["close","default_encoding","encoding_to_string","format_error","interpret_file_attribute","macro_defs","normalize_typed_record_fields","open","parse_erl_form","parse_file","read_encoding","read_encoding_from_binary","restore_typed_record_fields","scan_erl_form","set_encoding"],"httpd_conf":["check_enum","clean","custom_clean","is_directory","is_file","load","load_mime_types","make_integer","remove","remove_all","store"],"mod_esi":["deliver","do","load"],"erl_expand_records":["module"],"compile":["compile","compile_asm","compile_beam","compile_core","file","format_error","forms","iofile","noenv_file","noenv_forms","noenv_output_generated","options","output_generated"],"eldap":["add","approxMatch","baseObject","close","controlling_process","delete","derefAlways","derefFindingBaseObj","derefInSearching","equalityMatch","extensibleMatch","getopts","greaterOrEqual","lessOrEqual","loop","mod_add","mod_delete","mod_replace","modify","modify_dn","modify_password","neverDerefAliases","open","parse_dn","parse_ldap_url","present","search","simple_bind","singleLevel","start_tls","substrings","wholeSubtree"],"digraph_utils":["arborescence_root","components","condensation","cyclic_strong_components","is_acyclic","is_arborescence","is_tree","loop_vertices","postorder","preorder","reachable","reachable_neighbours","reaching","reaching_neighbours","strong_components","subgraph","topsort"],"inet":["close","connect_options","fdopen","format_error","get_rc","getaddr","getaddr_tm","getaddrs","getaddrs_tm","getfd","gethostbyaddr","gethostbyaddr_tm","gethostbyname","gethostbyname_self","gethostbyname_string","gethostbyname_tm","gethostname","getif","getifaddrs","getiflist","getll","getopts","getservbyname","getservbyport","getstat","i","ifget","ifset","ip","listen_options","lock_socket","ntoa","open","options","parse_address","parse_ipv4_address","parse_ipv4strict_address","parse_ipv6_address","parse_ipv6strict_address","parse_strict_address","peername","peernames","popf","port","pushf","sctp_options","send","setopts","setpeername","setsockname","sockname","socknames","start_timer","stats","stop_timer","tcp_close","tcp_controlling_process","timeout","translate_ip","udp_close","udp_controlling_process","udp_options"],"file":["advise","allocate","altname","change_group","change_mode","change_owner","change_time","close","consult","copy","copy_opened","datasync","del_dir","delete","eval","format_error","get_cwd","ipread_s32bu_p32bu","ipread_s32bu_p32bu_int","list_dir","list_dir_all","make_dir","make_link","make_symlink","native_name_encoding","open","path_consult","path_eval","path_open","path_script","pid2name","position","pread","pwrite","raw_read_file_info","raw_write_file_info","read","read_file","read_file_info","read_line","read_link","read_link_all","read_link_info","rename","script","sendfile","set_cwd","sync","truncate","write","write_file","write_file_info"],"erl_internal":["arith_op","bif","bool_op","comp_op","guard_bif","is_type","list_op","new_type_test","old_bif","old_type_test","op_type","send_op","type_test"],"diameter_codec":["collect_avps","decode","decode_header","encode","getopt","hop_by_hop_id","msg_id","msg_name","pack_avp","sequence_numbers","setopts"],"string":["centre","chars","chr","concat","copies","cspan","equal","join","left","len","rchr","right","rstr","span","str","strip","sub_string","sub_word","substr","to_float","to_integer","to_lower","to_upper","tokens","words"],"wrap_log_reader":["chunk","close","open"],"init":["archive_extension","boot","code_path_choice","ensure_loaded","fetch_loaded","get_argument","get_arguments","get_plain_arguments","get_status","make_permanent","notify_when_started","objfile_extension","reboot","restart","run_on_load_handlers","script_id","stop","wait_until_started"],"mnesia":["abort","activate_checkpoint","activity","add_table_copy","add_table_index","all_keys","async_dirty","backup","backup_checkpoint","change_config","change_table_access_mode","change_table_copy_type","change_table_frag","change_table_load_order","clear_table","create_schema","create_table","deactivate_checkpoint","del_table_copy","del_table_index","delete","delete_object","delete_schema","delete_table","delete_table_property","dirty_all_keys","dirty_delete","dirty_delete_object","dirty_first","dirty_index_match_object","dirty_index_read","dirty_last","dirty_match_object","dirty_next","dirty_prev","dirty_read","dirty_rpc","dirty_select","dirty_slot","dirty_update_counter","dirty_write","dump_log","dump_tables","dump_to_textfile","error_description","ets","foldl","foldr","force_load_table","fun_select","get_activity_id","has_var","index_match_object","index_read","info","install_fallback","kill","lkill","load_textfile","lock","match_object","move_table_copy","ms","nc","ni","put_activity_id","read","read_lock_table","read_table_property","remote_dirty_match_object","remote_dirty_select","report_event","restore","s_delete","s_delete_object","s_write","schema","select","set_debug_level","set_master_nodes","snmp_close_table","snmp_get_mnesia_key","snmp_get_next_index","snmp_get_row","snmp_open_table","start","stop","subscribe","sync_dirty","sync_transaction","system_info","table_info","transaction","transform_table","traverse_backup","uninstall_fallback","unsubscribe","wait_for_tables","wread","write","write_lock_table","write_table_property"],"supervisor_bridge":["code_change","handle_call","handle_cast","handle_info","init","start_link","terminate"],"io":["columns","format","fread","fwrite","get_chars","get_line","get_password","getopts","nl","parse_erl_exprs","parse_erl_form","printable_range","put_chars","read","request","requests","rows","scan_erl_exprs","scan_erl_form","setopts","write"],"gen_server":["abcast","call","cast","enter_loop","format_status","init_it","multi_call","reply","start","start_link","stop","system_code_change","system_continue","system_get_state","system_replace_state","system_terminate","wake_hib"],"math":["acos","acosh","asin","asinh","atan","atan2","atanh","cos","cosh","erf","erfc","exp","log","log10","log2","pi","pow","sin","sinh","sqrt","tan","tanh"],"heart":["clear_cmd","cycle","get_cmd","init","set_cmd","start"],"httpd_util":["convert_request_date","create_etag","day","decode_base64","decode_hex","encode_base64","encode_hex","flatlength","getSize","header","hexlist_to_integer","integer_to_hexlist","key1search","lookup","lookup_mime","lookup_mime_default","make_name","message","month","multi_lookup","reason_phrase","response_generated","rfc1123_date","split","split_path","split_script_path","strip","suffix","to_lower","to_upper","uniq"],"seq_trace":["get_system_tracer","get_token","print","reset_trace","set_system_tracer","set_token"],"memsup":["code_change","dummy_reply","format_status","get_check_interval","get_helper_timeout","get_memory_data","get_os_wordsize","get_procmem_high_watermark","get_sysmem_high_watermark","get_system_memory_data","handle_call","handle_cast","handle_info","init","param_default","param_type","set_check_interval","set_helper_timeout","set_procmem_high_watermark","set_sysmem_high_watermark","start_link","terminate"],"filelib":["compile_wildcard","ensure_dir","file_size","fold_files","is_dir","is_file","is_regular","last_modified","wildcard"],"global":["cnode","code_change","del_lock","handle_call","handle_cast","handle_info","info","init","init_locker","init_the_locker","node_disconnected","notify_all_name","random_exit_name","random_notify_name","re_register_name","register_name","register_name_external","registered_names","resolve_it","safe_whereis_name","send","set_lock","start","start_link","stop","sync","sync_init","terminate","timer","trans","unregister_name","unregister_name_external","whereis_name"],"tftp":["change_config","info","read_file","service_info","services","start","start_service","start_standalone","stop_service","write_file"],"pool":["attach","do_spawn","get_node","get_nodes","get_nodes_and_load","handle_call","handle_cast","handle_info","init","pspawn","pspawn_link","start","statistic_collector","stop","terminate"],"digraph":["add_edge","add_vertex","del_edge","del_edges","del_path","del_vertex","del_vertices","delete","edge","edges","get_cycle","get_path","get_short_cycle","get_short_path","in_degree","in_edges","in_neighbours","info","new","no_edges","no_vertices","out_degree","out_edges","out_neighbours","sink_vertices","source_vertices","vertex","vertices"],"lists":["all","any","append","concat","delete","droplast","dropwhile","duplicate","filter","filtermap","flatlength","flatmap","flatten","foldl","foldr","foreach","keydelete","keyfind","keymap","keymember","keymerge","keyreplace","keysearch","keysort","keystore","keytake","last","map","mapfoldl","mapfoldr","max","member","merge","merge3","min","nth","nthtail","partition","prefix","reverse","rkeymerge","rmerge","rmerge3","rukeymerge","rumerge","rumerge3","seq","sort","split","splitwith","sublist","subtract","suffix","sum","takewhile","ukeymerge","ukeysort","umerge","umerge3","unzip","unzip3","usort","zf","zip","zip3","zipwith","zipwith3"],"asn1rt":["decode","encode","info","load_driver","unload_driver","utf8_binary_to_list","utf8_list_to_binary"],"mnesia_frag_hash":["add_frag","del_frag","init_state","key_to_frag_number","match_spec_to_frag_numbers"],"qlc":["all_selections","append","aux_name","cursor","delete_cursor","e","eval","fold","format_error","info","keysort","name_suffix","next_answers","parse_transform","q","sort","string_to_handle","table","template_state","transform_from_evaluator","var_fold","var_ufold","vars"],"ssh_connection":["adjust_window","bind","bound_channel","cancel_tcpip_forward","channel_adjust_window_msg","channel_close_msg","channel_data","channel_data_msg","channel_eof_msg","channel_failure_msg","channel_open_confirmation_msg","channel_open_failure_msg","channel_open_msg","channel_request_msg","channel_status_msg","channel_success_msg","close","direct_tcpip","encode_ip","exec","exit_status","global_request_msg","handle_msg","ptty_alloc","reply_request","request_failure_msg","request_success_msg","send","send_eof","session_channel","setenv","shell","signal","subsystem","tcpip_forward","unbind","unbind_channel","window_change"],"diameter_make":["codec","flatten","format","format_error"],"queue":["cons","daeh","drop","drop_r","filter","from_list","get","get_r","head","in","in_r","init","is_empty","is_queue","join","lait","last","len","liat","member","new","out","out_r","peek","peek_r","reverse","snoc","split","tail","to_list"],"ssh":["channel_info","close","connect","connection_info","daemon","default_algorithms","shell","start","stop","stop_daemon","stop_listener"],"gen_event":["add_handler","add_sup_handler","call","delete_handler","format_status","init_it","notify","start","start_link","stop","swap_handler","swap_sup_handler","sync_notify","system_code_change","system_continue","system_get_state","system_replace_state","system_terminate","wake_hib","which_handlers"],"erl_anno":["column","end_location","file","from_term","generated","is_anno","line","location","new","record","set_file","set_generated","set_line","set_location","set_record","set_text","text","to_term"],"auth":["code_change","cookie","get_cookie","handle_call","handle_cast","handle_info","init","is_auth","node_cookie","print","set_cookie","start_link","sync_cookie","terminate"],"sys":["change_code","debug_options","get_debug","get_state","get_status","handle_debug","handle_system_msg","install","log","log_to_file","no_debug","print_log","remove","replace_state","resume","statistics","suspend","suspend_loop_hib","terminate","trace"],"shell":["catch_exception","history","local_allowed","non_local_allowed","prompt_func","results","server","start","start_restricted","stop_restricted","strings","whereis_evaluator"],"binary":["at","bin_to_list","compile_pattern","copy","decode_unsigned","encode_unsigned","first","last","list_to_bin","longest_common_prefix","longest_common_suffix","match","matches","part","referenced_byte_size","replace","split"],"proplists":["append_values","compact","delete","expand","get_all_values","get_bool","get_keys","get_value","is_defined","lookup","lookup_all","normalize","property","split","substitute_aliases","substitute_negations","unfold"],"gen_sctp":["abort","close","connect","connect_init","controlling_process","eof","error_string","listen","open","peeloff","recv","send"],"ssh_channel":["cache_create","cache_delete","cache_find","cache_foldl","cache_lookup","cache_update","call","cast","code_change","enter_loop","get_print_info","handle_call","handle_cast","handle_info","init","reply","start","start_link","terminate"],"asn1ct":["add_generated_refed_func","add_tobe_refed_func","compile","compile_asn","compile_asn1","compile_py","current_sindex","decode","encode","error","format_error","generated_refed_func","get_bit_string_format","get_gen_state_field","get_name_of_def","get_pos_of_def","get_tobe_refed_func","is_function_generated","maybe_rename_function","maybe_saved_sindex","next_refed_func","parse_and_save","partial_inc_dec_toptype","read_config_data","reset_gen_state","set_current_sindex","step_in_constructed","test","unset_pos_mod","update_gen_state","update_namelist","use_legacy_types","value","verbose","vsn","warning"],"cpu_sup":["avg1","avg15","avg5","code_change","dummy_reply","handle_call","handle_cast","handle_info","init","nprocs","ping","start","start_link","stop","terminate","util"],"erl_prim_loader":["get_cwd","get_file","get_files","get_path","list_dir","prim_get_cwd","prim_get_file","prim_init","prim_list_dir","prim_read_file_info","read_file_info","read_link_info","release_archives","set_path","set_primary_archive","start"],"nteventlog":["code_change","handle_call","handle_cast","handle_info","init","start","start_link","stop","terminate"],"net_kernel":["allow","aux_ticker","code_change","connect","connect_node","connecttime","dflag_unicode_io","disconnect","do_spawn","epmd_module","get_net_ticktime","handle_call","handle_cast","handle_info","hidden_connect","hidden_connect_node","i","init","kernel_apply","longnames","monitor_nodes","node_info","nodes_info","passive_cnct","passive_connect_monitor","protocol_childspecs","publish_on_node","set_net_ticktime","spawn_func","start","start_link","stop","terminate","ticker","ticker_loop","update_publish_nodes","verbose"],"ms_transform":["format_error","parse_transform","transform_from_shell"],"rpc":["abcast","async_call","block_call","call","cast","code_change","eval_everywhere","handle_call","handle_cast","handle_info","init","multi_server_call","multicall","nb_yield","parallel_eval","pinfo","pmap","proxy_user_flush","safe_multi_server_call","sbcast","server_call","start","start_link","stop","terminate","yield"],"io_lib":["build_text","char_list","collect_chars","collect_line","deep_char_list","deep_latin1_char_list","deep_unicode_char_list","format","format_prompt","fread","fwrite","get_until","indentation","latin1_char_list","nl","print","printable_latin1_list","printable_list","printable_unicode_list","quote_atom","scan_format","unscan_format","write","write_atom","write_char","write_char_as_latin1","write_latin1_char","write_latin1_string","write_string","write_string_as_latin1","write_unicode_char","write_unicode_string"],"os":["cmd","find_executable","getenv","getpid","putenv","system_time","timestamp","type","unsetenv","version"],"dets":["add_user","all","bchunk","close","delete","delete_all_objects","delete_object","file_info","first","foldl","foldr","from_ets","fsck","get_head_field","info","init","init_table","insert","insert_new","internal_close","internal_open","is_compatible_bchunk_format","is_dets_file","istart_link","lookup","lookup_keys","match","match_delete","match_object","member","next","open_file","pid2name","remove_user","repair_continuation","safe_fixtable","select","select_delete","slot","start","stop","sync","system_code_change","system_continue","system_terminate","table","to_ets","traverse","update_counter","verbose","view","where"],"rb":["code_change","filter","grep","h","handle_call","handle_cast","handle_info","help","init","list","log_list","rescan","show","start","start_link","start_log","stop","stop_log","terminate"],"diameter_transport":["eval","select","start"],"disksup":["code_change","dummy_reply","format_status","get_almost_full_threshold","get_check_interval","get_disk_data","handle_call","handle_cast","handle_info","init","param_default","param_type","set_almost_full_threshold","set_check_interval","start_link","terminate"],"gb_trees":["balance","delete","delete_any","empty","enter","from_orddict","get","insert","is_defined","is_empty","iterator","iterator_from","keys","largest","lookup","map","next","size","smallest","take_largest","take_smallest","to_list","update","values"],"erl_boot_server":["add_slave","add_subnet","boot_accept","boot_init","code_change","delete_slave","delete_subnet","handle_call","handle_cast","handle_info","init","start","start_link","terminate","which_slaves","would_be_booted"],"erl_tar":["add","close","create","extract","format_error","init","open","t","table","tt"],"zlib":["adler32","adler32_combine","close","compress","crc32","crc32_combine","deflate","deflateEnd","deflateInit","deflateParams","deflateReset","deflateSetDictionary","getBufSize","getQSize","gunzip","gzip","inflate","inflateChunk","inflateEnd","inflateInit","inflateReset","inflateSetDictionary","inflateSync","open","setBufSize","uncompress","unzip","zip"],"pg2":["create","delete","get_closest_pid","get_local_members","get_members","handle_call","handle_cast","handle_info","init","join","leave","start","start_link","terminate","which_groups"],"mod_alias":["default_index","do","load","path","real_name","real_script_name"],"public_key":["compute_key","decrypt_private","decrypt_public","der_decode","der_encode","dh_gex_group","dh_gex_group_sizes","encrypt_private","encrypt_public","generate_key","oid2ssh_curvename","pem_decode","pem_encode","pem_entry_decode","pem_entry_encode","pkix_crl_issuer","pkix_crl_verify","pkix_crls_validate","pkix_decode_cert","pkix_dist_point","pkix_dist_points","pkix_encode","pkix_is_fixed_dh_cert","pkix_is_issuer","pkix_is_self_signed","pkix_issuer_id","pkix_normalize_name","pkix_path_validation","pkix_sign","pkix_sign_types","pkix_verify","sign","ssh_curvename2oid","ssh_decode","ssh_encode","verify"],"otp_mib":["appl_table","erl_node_table","get_appls","get_erl_node","load","unload","update_appl_table","update_erl_node_table"],"net_adm":["dns_hostname","host_file","localhost","names","ping","ping_list","world","world_list"],"httpc":["cancel_request","cookie_header","default_profile","get_option","get_options","info","profile_name","request","reset_cookies","service_info","services","set_option","set_options","start_service","start_standalone","stop_service","store_cookies","stream_next","which_cookies","which_sessions"],"sets":["add_element","del_element","filter","fold","from_list","intersection","is_disjoint","is_element","is_set","is_subset","new","size","subtract","to_list","union"],"diameter_tcp":["code_change","handle_call","handle_cast","handle_info","info","init","listener","ports","start","start_link","terminate"],"zip":["create","extract","foldl","list_dir","openzip_close","openzip_get","openzip_list_dir","openzip_open","openzip_t","openzip_tt","t","table","tt","unzip","zip","zip_close","zip_get","zip_get_state","zip_list_dir","zip_open","zip_t","zip_tt"],"erl_eval":["add_binding","binding","bindings","check_command","del_binding","expr","expr_list","exprs","fun_data","is_constant_expr","match_clause","new_bindings","partial_eval"],"file_sorter":["check","keycheck","keymerge","keysort","merge","sort"],"ets":["all","delete","delete_all_objects","delete_object","file2tab","filter","first","foldl","foldr","from_dets","fun2ms","give_away","i","info","init_table","insert","insert_new","is_compiled_ms","last","lookup","lookup_element","match","match_delete","match_object","match_spec_compile","match_spec_run","match_spec_run_r","member","new","next","prev","rename","repair_continuation","safe_fixtable","select","select_count","select_delete","select_reverse","setopts","slot","tab2file","tab2list","tabfile_info","table","take","test_ms","to_dets","update_counter","update_element"],"c":["appcall","bi","bt","c","cd","display_info","erlangrc","flush","help","i","l","lc","lc_batch","ls","m","memory","nc","ni","nl","nregs","pid","pwd","q","regs","uptime","xm","y"],"gen_udp":["close","connect","controlling_process","fdopen","open","recv","send"],"erl_parse":["abstract","anno_from_term","anno_to_term","fold_anno","format_error","func_prec","get_attribute","get_attributes","inop_prec","map_anno","mapfold_anno","max_prec","new_anno","normalise","parse","parse_and_scan","parse_exprs","parse_form","parse_term","preop_prec","set_line","tokens","type_inop_prec","type_preop_prec"],"ssl_crl_cache":["delete","fresh_crl","insert","lookup","select"],"erlang":["abs","adler32","adler32_combine","alloc_info","alloc_sizes","append","append_element","apply","atom_to_binary","atom_to_list","await_proc_exit","await_sched_wall_time_modifications","binary_part","binary_to_atom","binary_to_existing_atom","binary_to_float","binary_to_integer","binary_to_list","binary_to_term","bit_size","bitsize","bitstring_to_list","bump_reductions","byte_size","call_on_load_function","cancel_timer","check_old_code","check_process_code","convert_time_unit","crasher","crc32","crc32_combine","date","decode_packet","delay_trap","delete_element","delete_module","demonitor","dexit","dgroup_leader","disconnect_node","display","display_nl","display_string","dist_exit","dlink","dmonitor_node","dmonitor_p","dsend","dt_append_vm_tag_data","dt_get_tag","dt_get_tag_data","dt_prepend_vm_tag_data","dt_put_tag","dt_restore_tag","dt_spread_tag","dunlink","element","erase","error","exit","external_size","finish_after_on_load","finish_loading","float","float_to_binary","float_to_list","format_cpu_topology","fun_info","fun_info_mfa","fun_to_list","function_exported","garbage_collect","garbage_collect_message_area","gather_gc_info_result","gather_sched_wall_time_result","get","get_cookie","get_keys","get_module_info","get_stacktrace","group_leader","halt","hash","hd","hibernate","insert_element","integer_to_binary","integer_to_list","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_builtin","is_float","is_function","is_integer","is_list","is_map","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","load_nif","loaded","localtime","localtime_to_universaltime","make_fun","make_ref","make_tuple","map_size","match_spec_test","max","md5","md5_final","md5_init","md5_update","memory","min","module_loaded","monitor","monitor_node","monotonic_time","nif_error","node","nodes","now","open_port","phash","phash2","pid_to_list","port_call","port_close","port_command","port_connect","port_control","port_get_data","port_info","port_set_data","port_to_list","ports","posixtime_to_universaltime","pre_loaded","prepare_loading","process_display","process_flag","process_info","processes","purge_module","put","raise","read_timer","ref_to_list","register","registered","resume_process","round","self","send","send_after","send_nosuspend","seq_trace","seq_trace_info","seq_trace_print","set_cookie","set_cpu_topology","setelement","setnode","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","start_timer","statistics","subtract","suspend_process","system_flag","system_info","system_monitor","system_profile","system_time","term_to_binary","throw","time","time_offset","timestamp","tl","trace","trace_delivered","trace_info","trace_pattern","trunc","tuple_size","tuple_to_list","unique_integer","universaltime","universaltime_to_localtime","universaltime_to_posixtime","unlink","unregister","whereis","yield"],"diameter_app":["start","stop"],"random":["seed","seed0","uniform","uniform_s"]} 2 | -------------------------------------------------------------------------------- /syntaxes/erlang.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | comment 6 | The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp 7 | fileTypes 8 | 9 | erl 10 | hrl 11 | 12 | keyEquivalent 13 | ^~E 14 | name 15 | Erlang 16 | patterns 17 | 18 | 19 | include 20 | #module-directive 21 | 22 | 23 | include 24 | #import-export-directive 25 | 26 | 27 | include 28 | #behaviour-directive 29 | 30 | 31 | include 32 | #record-directive 33 | 34 | 35 | include 36 | #define-directive 37 | 38 | 39 | include 40 | #macro-directive 41 | 42 | 43 | include 44 | #directive 45 | 46 | 47 | include 48 | #function 49 | 50 | 51 | include 52 | #everything-else 53 | 54 | 55 | repository 56 | 57 | atom 58 | 59 | patterns 60 | 61 | 62 | begin 63 | (') 64 | beginCaptures 65 | 66 | 1 67 | 68 | name 69 | punctuation.definition.symbol.begin.erlang 70 | 71 | 72 | end 73 | (') 74 | endCaptures 75 | 76 | 1 77 | 78 | name 79 | punctuation.definition.symbol.end.erlang 80 | 81 | 82 | name 83 | constant.other.symbol.quoted.single.erlang 84 | patterns 85 | 86 | 87 | captures 88 | 89 | 1 90 | 91 | name 92 | punctuation.definition.escape.erlang 93 | 94 | 3 95 | 96 | name 97 | punctuation.definition.escape.erlang 98 | 99 | 100 | match 101 | (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}) 102 | name 103 | constant.other.symbol.escape.erlang 104 | 105 | 106 | match 107 | \\\^?.? 108 | name 109 | invalid.illegal.atom.erlang 110 | 111 | 112 | 113 | 114 | match 115 | [a-z][a-zA-Z\d@_]*+ 116 | name 117 | constant.other.symbol.unquoted.erlang 118 | 119 | 120 | 121 | behaviour-directive 122 | 123 | captures 124 | 125 | 1 126 | 127 | name 128 | punctuation.section.directive.begin.erlang 129 | 130 | 2 131 | 132 | name 133 | keyword.control.directive.behaviour.erlang 134 | 135 | 3 136 | 137 | name 138 | punctuation.definition.parameters.begin.erlang 139 | 140 | 4 141 | 142 | name 143 | entity.name.type.class.behaviour.definition.erlang 144 | 145 | 5 146 | 147 | name 148 | punctuation.definition.parameters.end.erlang 149 | 150 | 6 151 | 152 | name 153 | punctuation.section.directive.end.erlang 154 | 155 | 156 | match 157 | ^\s*+(-)\s*+(behaviour)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\))\s*+(\.) 158 | name 159 | meta.directive.behaviour.erlang 160 | 161 | binary 162 | 163 | begin 164 | (<<) 165 | beginCaptures 166 | 167 | 1 168 | 169 | name 170 | punctuation.definition.binary.begin.erlang 171 | 172 | 173 | end 174 | (>>) 175 | endCaptures 176 | 177 | 1 178 | 179 | name 180 | punctuation.definition.binary.end.erlang 181 | 182 | 183 | name 184 | meta.structure.binary.erlang 185 | patterns 186 | 187 | 188 | captures 189 | 190 | 1 191 | 192 | name 193 | punctuation.separator.binary.erlang 194 | 195 | 2 196 | 197 | name 198 | punctuation.separator.value-size.erlang 199 | 200 | 201 | match 202 | (,)|(:) 203 | 204 | 205 | include 206 | #internal-type-specifiers 207 | 208 | 209 | include 210 | #everything-else 211 | 212 | 213 | 214 | character 215 | 216 | patterns 217 | 218 | 219 | captures 220 | 221 | 1 222 | 223 | name 224 | punctuation.definition.character.erlang 225 | 226 | 2 227 | 228 | name 229 | constant.character.escape.erlang 230 | 231 | 3 232 | 233 | name 234 | punctuation.definition.escape.erlang 235 | 236 | 5 237 | 238 | name 239 | punctuation.definition.escape.erlang 240 | 241 | 242 | match 243 | (\$)((\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})) 244 | name 245 | constant.character.erlang 246 | 247 | 248 | match 249 | \$\\\^?.? 250 | name 251 | invalid.illegal.character.erlang 252 | 253 | 254 | captures 255 | 256 | 1 257 | 258 | name 259 | punctuation.definition.character.erlang 260 | 261 | 262 | match 263 | (\$)\S 264 | name 265 | constant.character.erlang 266 | 267 | 268 | match 269 | \$.? 270 | name 271 | invalid.illegal.character.erlang 272 | 273 | 274 | 275 | comment 276 | 277 | begin 278 | (^[ \t]+)?(?=%) 279 | beginCaptures 280 | 281 | 1 282 | 283 | name 284 | punctuation.whitespace.comment.leading.erlang 285 | 286 | 287 | end 288 | (?!\G) 289 | patterns 290 | 291 | 292 | begin 293 | % 294 | beginCaptures 295 | 296 | 0 297 | 298 | name 299 | punctuation.definition.comment.erlang 300 | 301 | 302 | end 303 | \n 304 | name 305 | comment.line.percentage.erlang 306 | 307 | 308 | 309 | define-directive 310 | 311 | patterns 312 | 313 | 314 | begin 315 | ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(,) 316 | beginCaptures 317 | 318 | 1 319 | 320 | name 321 | punctuation.section.directive.begin.erlang 322 | 323 | 2 324 | 325 | name 326 | keyword.control.directive.define.erlang 327 | 328 | 3 329 | 330 | name 331 | punctuation.definition.parameters.begin.erlang 332 | 333 | 4 334 | 335 | name 336 | entity.name.function.macro.definition.erlang 337 | 338 | 5 339 | 340 | name 341 | punctuation.separator.parameters.erlang 342 | 343 | 344 | end 345 | (\))\s*+(\.) 346 | endCaptures 347 | 348 | 1 349 | 350 | name 351 | punctuation.definition.parameters.end.erlang 352 | 353 | 2 354 | 355 | name 356 | punctuation.section.directive.end.erlang 357 | 358 | 359 | name 360 | meta.directive.define.erlang 361 | patterns 362 | 363 | 364 | include 365 | #everything-else 366 | 367 | 368 | 369 | 370 | begin 371 | (?=^\s*+-\s*+define\s*+\(\s*+[a-zA-Z\d@_]++\s*+\() 372 | end 373 | (\))\s*+(\.) 374 | endCaptures 375 | 376 | 1 377 | 378 | name 379 | punctuation.definition.parameters.end.erlang 380 | 381 | 2 382 | 383 | name 384 | punctuation.section.directive.end.erlang 385 | 386 | 387 | name 388 | meta.directive.define.erlang 389 | patterns 390 | 391 | 392 | begin 393 | ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(\() 394 | beginCaptures 395 | 396 | 1 397 | 398 | name 399 | punctuation.section.directive.begin.erlang 400 | 401 | 2 402 | 403 | name 404 | keyword.control.directive.define.erlang 405 | 406 | 3 407 | 408 | name 409 | punctuation.definition.parameters.begin.erlang 410 | 411 | 4 412 | 413 | name 414 | entity.name.function.macro.definition.erlang 415 | 416 | 5 417 | 418 | name 419 | punctuation.definition.parameters.begin.erlang 420 | 421 | 422 | end 423 | (\))\s*(,) 424 | endCaptures 425 | 426 | 1 427 | 428 | name 429 | punctuation.definition.parameters.end.erlang 430 | 431 | 2 432 | 433 | name 434 | punctuation.separator.parameters.erlang 435 | 436 | 437 | patterns 438 | 439 | 440 | match 441 | , 442 | name 443 | punctuation.separator.parameters.erlang 444 | 445 | 446 | include 447 | #everything-else 448 | 449 | 450 | 451 | 452 | match 453 | \|\||\||:|;|,|\.|-> 454 | name 455 | punctuation.separator.define.erlang 456 | 457 | 458 | include 459 | #everything-else 460 | 461 | 462 | 463 | 464 | 465 | directive 466 | 467 | patterns 468 | 469 | 470 | begin 471 | ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\(?) 472 | beginCaptures 473 | 474 | 1 475 | 476 | name 477 | punctuation.section.directive.begin.erlang 478 | 479 | 2 480 | 481 | name 482 | keyword.control.directive.erlang 483 | 484 | 3 485 | 486 | name 487 | punctuation.definition.parameters.begin.erlang 488 | 489 | 490 | end 491 | (\)?)\s*+(\.) 492 | endCaptures 493 | 494 | 1 495 | 496 | name 497 | punctuation.definition.parameters.end.erlang 498 | 499 | 2 500 | 501 | name 502 | punctuation.section.directive.end.erlang 503 | 504 | 505 | name 506 | meta.directive.erlang 507 | patterns 508 | 509 | 510 | include 511 | #everything-else 512 | 513 | 514 | 515 | 516 | captures 517 | 518 | 1 519 | 520 | name 521 | punctuation.section.directive.begin.erlang 522 | 523 | 2 524 | 525 | name 526 | keyword.control.directive.erlang 527 | 528 | 3 529 | 530 | name 531 | punctuation.section.directive.end.erlang 532 | 533 | 534 | match 535 | ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.) 536 | name 537 | meta.directive.erlang 538 | 539 | 540 | 541 | everything-else 542 | 543 | patterns 544 | 545 | 546 | include 547 | #comment 548 | 549 | 550 | include 551 | #record-usage 552 | 553 | 554 | include 555 | #macro-usage 556 | 557 | 558 | include 559 | #expression 560 | 561 | 562 | include 563 | #keyword 564 | 565 | 566 | include 567 | #textual-operator 568 | 569 | 570 | include 571 | #function-call 572 | 573 | 574 | include 575 | #tuple 576 | 577 | 578 | include 579 | #list 580 | 581 | 582 | include 583 | #binary 584 | 585 | 586 | include 587 | #parenthesized-expression 588 | 589 | 590 | include 591 | #character 592 | 593 | 594 | include 595 | #number 596 | 597 | 598 | include 599 | #atom 600 | 601 | 602 | include 603 | #string 604 | 605 | 606 | include 607 | #symbolic-operator 608 | 609 | 610 | include 611 | #variable 612 | 613 | 614 | 615 | expression 616 | 617 | patterns 618 | 619 | 620 | begin 621 | \b(if)\b 622 | beginCaptures 623 | 624 | 1 625 | 626 | name 627 | keyword.control.if.erlang 628 | 629 | 630 | end 631 | \b(end)\b 632 | endCaptures 633 | 634 | 1 635 | 636 | name 637 | keyword.control.end.erlang 638 | 639 | 640 | name 641 | meta.expression.if.erlang 642 | patterns 643 | 644 | 645 | include 646 | #internal-expression-punctuation 647 | 648 | 649 | include 650 | #everything-else 651 | 652 | 653 | 654 | 655 | begin 656 | \b(case)\b 657 | beginCaptures 658 | 659 | 1 660 | 661 | name 662 | keyword.control.case.erlang 663 | 664 | 665 | end 666 | \b(end)\b 667 | endCaptures 668 | 669 | 1 670 | 671 | name 672 | keyword.control.end.erlang 673 | 674 | 675 | name 676 | meta.expression.case.erlang 677 | patterns 678 | 679 | 680 | include 681 | #internal-expression-punctuation 682 | 683 | 684 | include 685 | #everything-else 686 | 687 | 688 | 689 | 690 | begin 691 | \b(receive)\b 692 | beginCaptures 693 | 694 | 1 695 | 696 | name 697 | keyword.control.receive.erlang 698 | 699 | 700 | end 701 | \b(end)\b 702 | endCaptures 703 | 704 | 1 705 | 706 | name 707 | keyword.control.end.erlang 708 | 709 | 710 | name 711 | meta.expression.receive.erlang 712 | patterns 713 | 714 | 715 | include 716 | #internal-expression-punctuation 717 | 718 | 719 | include 720 | #everything-else 721 | 722 | 723 | 724 | 725 | captures 726 | 727 | 1 728 | 729 | name 730 | keyword.control.fun.erlang 731 | 732 | 3 733 | 734 | name 735 | entity.name.type.class.module.erlang 736 | 737 | 4 738 | 739 | name 740 | punctuation.separator.module-function.erlang 741 | 742 | 5 743 | 744 | name 745 | entity.name.function.erlang 746 | 747 | 6 748 | 749 | name 750 | punctuation.separator.function-arity.erlang 751 | 752 | 753 | match 754 | \b(fun)\s*+(([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*(/) 755 | 756 | 757 | begin 758 | \b(fun)\b 759 | beginCaptures 760 | 761 | 1 762 | 763 | name 764 | keyword.control.fun.erlang 765 | 766 | 767 | end 768 | \b(end)\b 769 | endCaptures 770 | 771 | 1 772 | 773 | name 774 | keyword.control.end.erlang 775 | 776 | 777 | name 778 | meta.expression.fun.erlang 779 | patterns 780 | 781 | 782 | begin 783 | (?=\() 784 | end 785 | (;)|(?=\bend\b) 786 | endCaptures 787 | 788 | 1 789 | 790 | name 791 | punctuation.separator.clauses.erlang 792 | 793 | 794 | patterns 795 | 796 | 797 | include 798 | #internal-function-parts 799 | 800 | 801 | 802 | 803 | include 804 | #everything-else 805 | 806 | 807 | 808 | 809 | begin 810 | \b(try)\b 811 | beginCaptures 812 | 813 | 1 814 | 815 | name 816 | keyword.control.try.erlang 817 | 818 | 819 | end 820 | \b(end)\b 821 | endCaptures 822 | 823 | 1 824 | 825 | name 826 | keyword.control.end.erlang 827 | 828 | 829 | name 830 | meta.expression.try.erlang 831 | patterns 832 | 833 | 834 | include 835 | #internal-expression-punctuation 836 | 837 | 838 | include 839 | #everything-else 840 | 841 | 842 | 843 | 844 | begin 845 | \b(begin)\b 846 | beginCaptures 847 | 848 | 1 849 | 850 | name 851 | keyword.control.begin.erlang 852 | 853 | 854 | end 855 | \b(end)\b 856 | endCaptures 857 | 858 | 1 859 | 860 | name 861 | keyword.control.end.erlang 862 | 863 | 864 | name 865 | meta.expression.begin.erlang 866 | patterns 867 | 868 | 869 | include 870 | #internal-expression-punctuation 871 | 872 | 873 | include 874 | #everything-else 875 | 876 | 877 | 878 | 879 | begin 880 | \b(query)\b 881 | beginCaptures 882 | 883 | 1 884 | 885 | name 886 | keyword.control.query.erlang 887 | 888 | 889 | end 890 | \b(end)\b 891 | endCaptures 892 | 893 | 1 894 | 895 | name 896 | keyword.control.end.erlang 897 | 898 | 899 | name 900 | meta.expression.query.erlang 901 | patterns 902 | 903 | 904 | include 905 | #everything-else 906 | 907 | 908 | 909 | 910 | 911 | function 912 | 913 | begin 914 | ^\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(?=\() 915 | beginCaptures 916 | 917 | 1 918 | 919 | name 920 | entity.name.function.definition.erlang 921 | 922 | 923 | end 924 | (\.) 925 | endCaptures 926 | 927 | 1 928 | 929 | name 930 | punctuation.terminator.function.erlang 931 | 932 | 933 | name 934 | meta.function.erlang 935 | patterns 936 | 937 | 938 | captures 939 | 940 | 1 941 | 942 | name 943 | entity.name.function.erlang 944 | 945 | 946 | match 947 | ^\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(?=\() 948 | 949 | 950 | begin 951 | (?=\() 952 | end 953 | (;)|(?=\.) 954 | endCaptures 955 | 956 | 1 957 | 958 | name 959 | punctuation.separator.clauses.erlang 960 | 961 | 962 | patterns 963 | 964 | 965 | include 966 | #parenthesized-expression 967 | 968 | 969 | include 970 | #internal-function-parts 971 | 972 | 973 | 974 | 975 | include 976 | #everything-else 977 | 978 | 979 | 980 | function-call 981 | 982 | begin 983 | (?=([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(\(|:\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+\()) 984 | end 985 | (\)) 986 | endCaptures 987 | 988 | 1 989 | 990 | name 991 | punctuation.definition.parameters.end.erlang 992 | 993 | 994 | name 995 | meta.function-call.erlang 996 | patterns 997 | 998 | 999 | begin 1000 | ((erlang)\s*+(:)\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\s*+(\() 1001 | beginCaptures 1002 | 1003 | 2 1004 | 1005 | name 1006 | entity.name.type.class.module.erlang 1007 | 1008 | 3 1009 | 1010 | name 1011 | punctuation.separator.module-function.erlang 1012 | 1013 | 4 1014 | 1015 | name 1016 | entity.name.function.guard.erlang 1017 | 1018 | 5 1019 | 1020 | name 1021 | punctuation.definition.parameters.begin.erlang 1022 | 1023 | 1024 | end 1025 | (?=\)) 1026 | patterns 1027 | 1028 | 1029 | match 1030 | , 1031 | name 1032 | punctuation.separator.parameters.erlang 1033 | 1034 | 1035 | include 1036 | #everything-else 1037 | 1038 | 1039 | 1040 | 1041 | begin 1042 | (([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(\() 1043 | beginCaptures 1044 | 1045 | 2 1046 | 1047 | name 1048 | entity.name.type.class.module.erlang 1049 | 1050 | 3 1051 | 1052 | name 1053 | punctuation.separator.module-function.erlang 1054 | 1055 | 4 1056 | 1057 | name 1058 | entity.name.function.erlang 1059 | 1060 | 5 1061 | 1062 | name 1063 | punctuation.definition.parameters.begin.erlang 1064 | 1065 | 1066 | end 1067 | (?=\)) 1068 | patterns 1069 | 1070 | 1071 | match 1072 | , 1073 | name 1074 | punctuation.separator.parameters.erlang 1075 | 1076 | 1077 | include 1078 | #everything-else 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | import-export-directive 1085 | 1086 | patterns 1087 | 1088 | 1089 | begin 1090 | ^\s*+(-)\s*+(import)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(,) 1091 | beginCaptures 1092 | 1093 | 1 1094 | 1095 | name 1096 | punctuation.section.directive.begin.erlang 1097 | 1098 | 2 1099 | 1100 | name 1101 | keyword.control.directive.import.erlang 1102 | 1103 | 3 1104 | 1105 | name 1106 | punctuation.definition.parameters.begin.erlang 1107 | 1108 | 4 1109 | 1110 | name 1111 | entity.name.type.class.module.erlang 1112 | 1113 | 5 1114 | 1115 | name 1116 | punctuation.separator.parameters.erlang 1117 | 1118 | 1119 | end 1120 | (\))\s*+(\.) 1121 | endCaptures 1122 | 1123 | 1 1124 | 1125 | name 1126 | punctuation.definition.parameters.end.erlang 1127 | 1128 | 2 1129 | 1130 | name 1131 | punctuation.section.directive.end.erlang 1132 | 1133 | 1134 | name 1135 | meta.directive.import.erlang 1136 | patterns 1137 | 1138 | 1139 | include 1140 | #internal-function-list 1141 | 1142 | 1143 | 1144 | 1145 | begin 1146 | ^\s*+(-)\s*+(export)\s*+(\() 1147 | beginCaptures 1148 | 1149 | 1 1150 | 1151 | name 1152 | punctuation.section.directive.begin.erlang 1153 | 1154 | 2 1155 | 1156 | name 1157 | keyword.control.directive.export.erlang 1158 | 1159 | 3 1160 | 1161 | name 1162 | punctuation.definition.parameters.begin.erlang 1163 | 1164 | 1165 | end 1166 | (\))\s*+(\.) 1167 | endCaptures 1168 | 1169 | 1 1170 | 1171 | name 1172 | punctuation.definition.parameters.end.erlang 1173 | 1174 | 2 1175 | 1176 | name 1177 | punctuation.section.directive.end.erlang 1178 | 1179 | 1180 | name 1181 | meta.directive.export.erlang 1182 | patterns 1183 | 1184 | 1185 | include 1186 | #internal-function-list 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | internal-expression-punctuation 1193 | 1194 | captures 1195 | 1196 | 1 1197 | 1198 | name 1199 | punctuation.separator.clause-head-body.erlang 1200 | 1201 | 2 1202 | 1203 | name 1204 | punctuation.separator.clauses.erlang 1205 | 1206 | 3 1207 | 1208 | name 1209 | punctuation.separator.expressions.erlang 1210 | 1211 | 1212 | match 1213 | (->)|(;)|(,) 1214 | 1215 | internal-function-list 1216 | 1217 | begin 1218 | (\[) 1219 | beginCaptures 1220 | 1221 | 1 1222 | 1223 | name 1224 | punctuation.definition.list.begin.erlang 1225 | 1226 | 1227 | end 1228 | (\]) 1229 | endCaptures 1230 | 1231 | 1 1232 | 1233 | name 1234 | punctuation.definition.list.end.erlang 1235 | 1236 | 1237 | name 1238 | meta.structure.list.function.erlang 1239 | patterns 1240 | 1241 | 1242 | begin 1243 | ([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(/) 1244 | beginCaptures 1245 | 1246 | 1 1247 | 1248 | name 1249 | entity.name.function.erlang 1250 | 1251 | 2 1252 | 1253 | name 1254 | punctuation.separator.function-arity.erlang 1255 | 1256 | 1257 | end 1258 | (,)|(?=\]) 1259 | endCaptures 1260 | 1261 | 1 1262 | 1263 | name 1264 | punctuation.separator.list.erlang 1265 | 1266 | 1267 | patterns 1268 | 1269 | 1270 | include 1271 | #everything-else 1272 | 1273 | 1274 | 1275 | 1276 | include 1277 | #everything-else 1278 | 1279 | 1280 | 1281 | internal-function-parts 1282 | 1283 | patterns 1284 | 1285 | 1286 | begin 1287 | (?=\() 1288 | end 1289 | (->) 1290 | endCaptures 1291 | 1292 | 1 1293 | 1294 | name 1295 | punctuation.separator.clause-head-body.erlang 1296 | 1297 | 1298 | patterns 1299 | 1300 | 1301 | begin 1302 | (\() 1303 | beginCaptures 1304 | 1305 | 1 1306 | 1307 | name 1308 | punctuation.definition.parameters.begin.erlang 1309 | 1310 | 1311 | end 1312 | (\)) 1313 | endCaptures 1314 | 1315 | 1 1316 | 1317 | name 1318 | punctuation.definition.parameters.end.erlang 1319 | 1320 | 1321 | patterns 1322 | 1323 | 1324 | match 1325 | , 1326 | name 1327 | punctuation.separator.parameters.erlang 1328 | 1329 | 1330 | include 1331 | #everything-else 1332 | 1333 | 1334 | 1335 | 1336 | match 1337 | ,|; 1338 | name 1339 | punctuation.separator.guards.erlang 1340 | 1341 | 1342 | include 1343 | #everything-else 1344 | 1345 | 1346 | 1347 | 1348 | match 1349 | , 1350 | name 1351 | punctuation.separator.expressions.erlang 1352 | 1353 | 1354 | include 1355 | #everything-else 1356 | 1357 | 1358 | 1359 | internal-record-body 1360 | 1361 | begin 1362 | (\{) 1363 | beginCaptures 1364 | 1365 | 1 1366 | 1367 | name 1368 | punctuation.definition.class.record.begin.erlang 1369 | 1370 | 1371 | end 1372 | (?=\}) 1373 | name 1374 | meta.structure.record.erlang 1375 | patterns 1376 | 1377 | 1378 | begin 1379 | (([a-z][a-zA-Z\d@_]*+|'[^']*+')|(_))\s*+(=|::) 1380 | beginCaptures 1381 | 1382 | 2 1383 | 1384 | name 1385 | variable.other.field.erlang 1386 | 1387 | 3 1388 | 1389 | name 1390 | variable.language.omitted.field.erlang 1391 | 1392 | 4 1393 | 1394 | name 1395 | keyword.operator.assignment.erlang 1396 | 1397 | 1398 | end 1399 | (,)|(?=\}) 1400 | endCaptures 1401 | 1402 | 1 1403 | 1404 | name 1405 | punctuation.separator.class.record.erlang 1406 | 1407 | 1408 | patterns 1409 | 1410 | 1411 | include 1412 | #everything-else 1413 | 1414 | 1415 | 1416 | 1417 | captures 1418 | 1419 | 1 1420 | 1421 | name 1422 | variable.other.field.erlang 1423 | 1424 | 2 1425 | 1426 | name 1427 | punctuation.separator.class.record.erlang 1428 | 1429 | 1430 | match 1431 | ([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(,)? 1432 | 1433 | 1434 | include 1435 | #everything-else 1436 | 1437 | 1438 | 1439 | internal-type-specifiers 1440 | 1441 | begin 1442 | (/) 1443 | beginCaptures 1444 | 1445 | 1 1446 | 1447 | name 1448 | punctuation.separator.value-type.erlang 1449 | 1450 | 1451 | end 1452 | (?=,|:|>>) 1453 | patterns 1454 | 1455 | 1456 | captures 1457 | 1458 | 1 1459 | 1460 | name 1461 | storage.type.erlang 1462 | 1463 | 2 1464 | 1465 | name 1466 | storage.modifier.signedness.erlang 1467 | 1468 | 3 1469 | 1470 | name 1471 | storage.modifier.endianness.erlang 1472 | 1473 | 4 1474 | 1475 | name 1476 | storage.modifier.unit.erlang 1477 | 1478 | 5 1479 | 1480 | name 1481 | punctuation.separator.type-specifiers.erlang 1482 | 1483 | 1484 | match 1485 | (integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-) 1486 | 1487 | 1488 | 1489 | keyword 1490 | 1491 | match 1492 | \b(after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\b 1493 | name 1494 | keyword.control.erlang 1495 | 1496 | list 1497 | 1498 | begin 1499 | (\[) 1500 | beginCaptures 1501 | 1502 | 1 1503 | 1504 | name 1505 | punctuation.definition.list.begin.erlang 1506 | 1507 | 1508 | end 1509 | (\]) 1510 | endCaptures 1511 | 1512 | 1 1513 | 1514 | name 1515 | punctuation.definition.list.end.erlang 1516 | 1517 | 1518 | name 1519 | meta.structure.list.erlang 1520 | patterns 1521 | 1522 | 1523 | match 1524 | \||\|\||, 1525 | name 1526 | punctuation.separator.list.erlang 1527 | 1528 | 1529 | include 1530 | #everything-else 1531 | 1532 | 1533 | 1534 | macro-directive 1535 | 1536 | patterns 1537 | 1538 | 1539 | captures 1540 | 1541 | 1 1542 | 1543 | name 1544 | punctuation.section.directive.begin.erlang 1545 | 1546 | 2 1547 | 1548 | name 1549 | keyword.control.directive.ifdef.erlang 1550 | 1551 | 3 1552 | 1553 | name 1554 | punctuation.definition.parameters.begin.erlang 1555 | 1556 | 4 1557 | 1558 | name 1559 | entity.name.function.macro.erlang 1560 | 1561 | 5 1562 | 1563 | name 1564 | punctuation.definition.parameters.end.erlang 1565 | 1566 | 6 1567 | 1568 | name 1569 | punctuation.section.directive.end.erlang 1570 | 1571 | 1572 | match 1573 | ^\s*+(-)\s*+(ifdef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) 1574 | name 1575 | meta.directive.ifdef.erlang 1576 | 1577 | 1578 | captures 1579 | 1580 | 1 1581 | 1582 | name 1583 | punctuation.section.directive.begin.erlang 1584 | 1585 | 2 1586 | 1587 | name 1588 | keyword.control.directive.ifndef.erlang 1589 | 1590 | 3 1591 | 1592 | name 1593 | punctuation.definition.parameters.begin.erlang 1594 | 1595 | 4 1596 | 1597 | name 1598 | entity.name.function.macro.erlang 1599 | 1600 | 5 1601 | 1602 | name 1603 | punctuation.definition.parameters.end.erlang 1604 | 1605 | 6 1606 | 1607 | name 1608 | punctuation.section.directive.end.erlang 1609 | 1610 | 1611 | match 1612 | ^\s*+(-)\s*+(ifndef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) 1613 | name 1614 | meta.directive.ifndef.erlang 1615 | 1616 | 1617 | captures 1618 | 1619 | 1 1620 | 1621 | name 1622 | punctuation.section.directive.begin.erlang 1623 | 1624 | 2 1625 | 1626 | name 1627 | keyword.control.directive.undef.erlang 1628 | 1629 | 3 1630 | 1631 | name 1632 | punctuation.definition.parameters.begin.erlang 1633 | 1634 | 4 1635 | 1636 | name 1637 | entity.name.function.macro.erlang 1638 | 1639 | 5 1640 | 1641 | name 1642 | punctuation.definition.parameters.end.erlang 1643 | 1644 | 6 1645 | 1646 | name 1647 | punctuation.section.directive.end.erlang 1648 | 1649 | 1650 | match 1651 | ^\s*+(-)\s*+(undef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) 1652 | name 1653 | meta.directive.undef.erlang 1654 | 1655 | 1656 | 1657 | macro-usage 1658 | 1659 | captures 1660 | 1661 | 1 1662 | 1663 | name 1664 | keyword.operator.macro.erlang 1665 | 1666 | 2 1667 | 1668 | name 1669 | entity.name.function.macro.erlang 1670 | 1671 | 1672 | match 1673 | (\?\??)\s*+([a-zA-Z\d@_]++) 1674 | name 1675 | meta.macro-usage.erlang 1676 | 1677 | module-directive 1678 | 1679 | captures 1680 | 1681 | 1 1682 | 1683 | name 1684 | punctuation.section.directive.begin.erlang 1685 | 1686 | 2 1687 | 1688 | name 1689 | keyword.control.directive.module.erlang 1690 | 1691 | 3 1692 | 1693 | name 1694 | punctuation.definition.parameters.begin.erlang 1695 | 1696 | 4 1697 | 1698 | name 1699 | entity.name.type.class.module.definition.erlang 1700 | 1701 | 5 1702 | 1703 | name 1704 | punctuation.definition.parameters.end.erlang 1705 | 1706 | 6 1707 | 1708 | name 1709 | punctuation.section.directive.end.erlang 1710 | 1711 | 1712 | match 1713 | ^\s*+(-)\s*+(module)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\))\s*+(\.) 1714 | name 1715 | meta.directive.module.erlang 1716 | 1717 | number 1718 | 1719 | begin 1720 | (?=\d) 1721 | end 1722 | (?!\d) 1723 | patterns 1724 | 1725 | 1726 | captures 1727 | 1728 | 1 1729 | 1730 | name 1731 | punctuation.separator.integer-float.erlang 1732 | 1733 | 2 1734 | 1735 | name 1736 | punctuation.separator.float-exponent.erlang 1737 | 1738 | 1739 | match 1740 | \d++(\.)\d++([eE][\+\-]?\d++)? 1741 | name 1742 | constant.numeric.float.erlang 1743 | 1744 | 1745 | captures 1746 | 1747 | 1 1748 | 1749 | name 1750 | punctuation.separator.base-integer.erlang 1751 | 1752 | 1753 | match 1754 | 2(#)[0-1]++ 1755 | name 1756 | constant.numeric.integer.binary.erlang 1757 | 1758 | 1759 | captures 1760 | 1761 | 1 1762 | 1763 | name 1764 | punctuation.separator.base-integer.erlang 1765 | 1766 | 1767 | match 1768 | 3(#)[0-2]++ 1769 | name 1770 | constant.numeric.integer.base-3.erlang 1771 | 1772 | 1773 | captures 1774 | 1775 | 1 1776 | 1777 | name 1778 | punctuation.separator.base-integer.erlang 1779 | 1780 | 1781 | match 1782 | 4(#)[0-3]++ 1783 | name 1784 | constant.numeric.integer.base-4.erlang 1785 | 1786 | 1787 | captures 1788 | 1789 | 1 1790 | 1791 | name 1792 | punctuation.separator.base-integer.erlang 1793 | 1794 | 1795 | match 1796 | 5(#)[0-4]++ 1797 | name 1798 | constant.numeric.integer.base-5.erlang 1799 | 1800 | 1801 | captures 1802 | 1803 | 1 1804 | 1805 | name 1806 | punctuation.separator.base-integer.erlang 1807 | 1808 | 1809 | match 1810 | 6(#)[0-5]++ 1811 | name 1812 | constant.numeric.integer.base-6.erlang 1813 | 1814 | 1815 | captures 1816 | 1817 | 1 1818 | 1819 | name 1820 | punctuation.separator.base-integer.erlang 1821 | 1822 | 1823 | match 1824 | 7(#)[0-6]++ 1825 | name 1826 | constant.numeric.integer.base-7.erlang 1827 | 1828 | 1829 | captures 1830 | 1831 | 1 1832 | 1833 | name 1834 | punctuation.separator.base-integer.erlang 1835 | 1836 | 1837 | match 1838 | 8(#)[0-7]++ 1839 | name 1840 | constant.numeric.integer.octal.erlang 1841 | 1842 | 1843 | captures 1844 | 1845 | 1 1846 | 1847 | name 1848 | punctuation.separator.base-integer.erlang 1849 | 1850 | 1851 | match 1852 | 9(#)[0-8]++ 1853 | name 1854 | constant.numeric.integer.base-9.erlang 1855 | 1856 | 1857 | captures 1858 | 1859 | 1 1860 | 1861 | name 1862 | punctuation.separator.base-integer.erlang 1863 | 1864 | 1865 | match 1866 | 10(#)\d++ 1867 | name 1868 | constant.numeric.integer.decimal.erlang 1869 | 1870 | 1871 | captures 1872 | 1873 | 1 1874 | 1875 | name 1876 | punctuation.separator.base-integer.erlang 1877 | 1878 | 1879 | match 1880 | 11(#)[\daA]++ 1881 | name 1882 | constant.numeric.integer.base-11.erlang 1883 | 1884 | 1885 | captures 1886 | 1887 | 1 1888 | 1889 | name 1890 | punctuation.separator.base-integer.erlang 1891 | 1892 | 1893 | match 1894 | 12(#)[\da-bA-B]++ 1895 | name 1896 | constant.numeric.integer.base-12.erlang 1897 | 1898 | 1899 | captures 1900 | 1901 | 1 1902 | 1903 | name 1904 | punctuation.separator.base-integer.erlang 1905 | 1906 | 1907 | match 1908 | 13(#)[\da-cA-C]++ 1909 | name 1910 | constant.numeric.integer.base-13.erlang 1911 | 1912 | 1913 | captures 1914 | 1915 | 1 1916 | 1917 | name 1918 | punctuation.separator.base-integer.erlang 1919 | 1920 | 1921 | match 1922 | 14(#)[\da-dA-D]++ 1923 | name 1924 | constant.numeric.integer.base-14.erlang 1925 | 1926 | 1927 | captures 1928 | 1929 | 1 1930 | 1931 | name 1932 | punctuation.separator.base-integer.erlang 1933 | 1934 | 1935 | match 1936 | 15(#)[\da-eA-E]++ 1937 | name 1938 | constant.numeric.integer.base-15.erlang 1939 | 1940 | 1941 | captures 1942 | 1943 | 1 1944 | 1945 | name 1946 | punctuation.separator.base-integer.erlang 1947 | 1948 | 1949 | match 1950 | 16(#)\h++ 1951 | name 1952 | constant.numeric.integer.hexadecimal.erlang 1953 | 1954 | 1955 | captures 1956 | 1957 | 1 1958 | 1959 | name 1960 | punctuation.separator.base-integer.erlang 1961 | 1962 | 1963 | match 1964 | 17(#)[\da-gA-G]++ 1965 | name 1966 | constant.numeric.integer.base-17.erlang 1967 | 1968 | 1969 | captures 1970 | 1971 | 1 1972 | 1973 | name 1974 | punctuation.separator.base-integer.erlang 1975 | 1976 | 1977 | match 1978 | 18(#)[\da-hA-H]++ 1979 | name 1980 | constant.numeric.integer.base-18.erlang 1981 | 1982 | 1983 | captures 1984 | 1985 | 1 1986 | 1987 | name 1988 | punctuation.separator.base-integer.erlang 1989 | 1990 | 1991 | match 1992 | 19(#)[\da-iA-I]++ 1993 | name 1994 | constant.numeric.integer.base-19.erlang 1995 | 1996 | 1997 | captures 1998 | 1999 | 1 2000 | 2001 | name 2002 | punctuation.separator.base-integer.erlang 2003 | 2004 | 2005 | match 2006 | 20(#)[\da-jA-J]++ 2007 | name 2008 | constant.numeric.integer.base-20.erlang 2009 | 2010 | 2011 | captures 2012 | 2013 | 1 2014 | 2015 | name 2016 | punctuation.separator.base-integer.erlang 2017 | 2018 | 2019 | match 2020 | 21(#)[\da-kA-K]++ 2021 | name 2022 | constant.numeric.integer.base-21.erlang 2023 | 2024 | 2025 | captures 2026 | 2027 | 1 2028 | 2029 | name 2030 | punctuation.separator.base-integer.erlang 2031 | 2032 | 2033 | match 2034 | 22(#)[\da-lA-L]++ 2035 | name 2036 | constant.numeric.integer.base-22.erlang 2037 | 2038 | 2039 | captures 2040 | 2041 | 1 2042 | 2043 | name 2044 | punctuation.separator.base-integer.erlang 2045 | 2046 | 2047 | match 2048 | 23(#)[\da-mA-M]++ 2049 | name 2050 | constant.numeric.integer.base-23.erlang 2051 | 2052 | 2053 | captures 2054 | 2055 | 1 2056 | 2057 | name 2058 | punctuation.separator.base-integer.erlang 2059 | 2060 | 2061 | match 2062 | 24(#)[\da-nA-N]++ 2063 | name 2064 | constant.numeric.integer.base-24.erlang 2065 | 2066 | 2067 | captures 2068 | 2069 | 1 2070 | 2071 | name 2072 | punctuation.separator.base-integer.erlang 2073 | 2074 | 2075 | match 2076 | 25(#)[\da-oA-O]++ 2077 | name 2078 | constant.numeric.integer.base-25.erlang 2079 | 2080 | 2081 | captures 2082 | 2083 | 1 2084 | 2085 | name 2086 | punctuation.separator.base-integer.erlang 2087 | 2088 | 2089 | match 2090 | 26(#)[\da-pA-P]++ 2091 | name 2092 | constant.numeric.integer.base-26.erlang 2093 | 2094 | 2095 | captures 2096 | 2097 | 1 2098 | 2099 | name 2100 | punctuation.separator.base-integer.erlang 2101 | 2102 | 2103 | match 2104 | 27(#)[\da-qA-Q]++ 2105 | name 2106 | constant.numeric.integer.base-27.erlang 2107 | 2108 | 2109 | captures 2110 | 2111 | 1 2112 | 2113 | name 2114 | punctuation.separator.base-integer.erlang 2115 | 2116 | 2117 | match 2118 | 28(#)[\da-rA-R]++ 2119 | name 2120 | constant.numeric.integer.base-28.erlang 2121 | 2122 | 2123 | captures 2124 | 2125 | 1 2126 | 2127 | name 2128 | punctuation.separator.base-integer.erlang 2129 | 2130 | 2131 | match 2132 | 29(#)[\da-sA-S]++ 2133 | name 2134 | constant.numeric.integer.base-29.erlang 2135 | 2136 | 2137 | captures 2138 | 2139 | 1 2140 | 2141 | name 2142 | punctuation.separator.base-integer.erlang 2143 | 2144 | 2145 | match 2146 | 30(#)[\da-tA-T]++ 2147 | name 2148 | constant.numeric.integer.base-30.erlang 2149 | 2150 | 2151 | captures 2152 | 2153 | 1 2154 | 2155 | name 2156 | punctuation.separator.base-integer.erlang 2157 | 2158 | 2159 | match 2160 | 31(#)[\da-uA-U]++ 2161 | name 2162 | constant.numeric.integer.base-31.erlang 2163 | 2164 | 2165 | captures 2166 | 2167 | 1 2168 | 2169 | name 2170 | punctuation.separator.base-integer.erlang 2171 | 2172 | 2173 | match 2174 | 32(#)[\da-vA-V]++ 2175 | name 2176 | constant.numeric.integer.base-32.erlang 2177 | 2178 | 2179 | captures 2180 | 2181 | 1 2182 | 2183 | name 2184 | punctuation.separator.base-integer.erlang 2185 | 2186 | 2187 | match 2188 | 33(#)[\da-wA-W]++ 2189 | name 2190 | constant.numeric.integer.base-33.erlang 2191 | 2192 | 2193 | captures 2194 | 2195 | 1 2196 | 2197 | name 2198 | punctuation.separator.base-integer.erlang 2199 | 2200 | 2201 | match 2202 | 34(#)[\da-xA-X]++ 2203 | name 2204 | constant.numeric.integer.base-34.erlang 2205 | 2206 | 2207 | captures 2208 | 2209 | 1 2210 | 2211 | name 2212 | punctuation.separator.base-integer.erlang 2213 | 2214 | 2215 | match 2216 | 35(#)[\da-yA-Y]++ 2217 | name 2218 | constant.numeric.integer.base-35.erlang 2219 | 2220 | 2221 | captures 2222 | 2223 | 1 2224 | 2225 | name 2226 | punctuation.separator.base-integer.erlang 2227 | 2228 | 2229 | match 2230 | 36(#)[\da-zA-Z]++ 2231 | name 2232 | constant.numeric.integer.base-36.erlang 2233 | 2234 | 2235 | match 2236 | \d++#[\da-zA-Z]++ 2237 | name 2238 | invalid.illegal.integer.erlang 2239 | 2240 | 2241 | match 2242 | \d++ 2243 | name 2244 | constant.numeric.integer.decimal.erlang 2245 | 2246 | 2247 | 2248 | parenthesized-expression 2249 | 2250 | begin 2251 | (\() 2252 | beginCaptures 2253 | 2254 | 1 2255 | 2256 | name 2257 | punctuation.section.expression.begin.erlang 2258 | 2259 | 2260 | end 2261 | (\)) 2262 | endCaptures 2263 | 2264 | 1 2265 | 2266 | name 2267 | punctuation.section.expression.end.erlang 2268 | 2269 | 2270 | name 2271 | meta.expression.parenthesized 2272 | patterns 2273 | 2274 | 2275 | include 2276 | #everything-else 2277 | 2278 | 2279 | 2280 | record-directive 2281 | 2282 | begin 2283 | ^\s*+(-)\s*+(record)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(,) 2284 | beginCaptures 2285 | 2286 | 1 2287 | 2288 | name 2289 | punctuation.section.directive.begin.erlang 2290 | 2291 | 2 2292 | 2293 | name 2294 | keyword.control.directive.import.erlang 2295 | 2296 | 3 2297 | 2298 | name 2299 | punctuation.definition.parameters.begin.erlang 2300 | 2301 | 4 2302 | 2303 | name 2304 | entity.name.type.class.record.definition.erlang 2305 | 2306 | 5 2307 | 2308 | name 2309 | punctuation.separator.parameters.erlang 2310 | 2311 | 2312 | end 2313 | ((\}))\s*+(\))\s*+(\.) 2314 | endCaptures 2315 | 2316 | 1 2317 | 2318 | name 2319 | meta.structure.record.erlang 2320 | 2321 | 2 2322 | 2323 | name 2324 | punctuation.definition.class.record.end.erlang 2325 | 2326 | 3 2327 | 2328 | name 2329 | punctuation.definition.parameters.end.erlang 2330 | 2331 | 4 2332 | 2333 | name 2334 | punctuation.section.directive.end.erlang 2335 | 2336 | 2337 | name 2338 | meta.directive.record.erlang 2339 | patterns 2340 | 2341 | 2342 | include 2343 | #internal-record-body 2344 | 2345 | 2346 | 2347 | record-usage 2348 | 2349 | patterns 2350 | 2351 | 2352 | captures 2353 | 2354 | 1 2355 | 2356 | name 2357 | keyword.operator.record.erlang 2358 | 2359 | 2 2360 | 2361 | name 2362 | entity.name.type.class.record.erlang 2363 | 2364 | 3 2365 | 2366 | name 2367 | punctuation.separator.record-field.erlang 2368 | 2369 | 4 2370 | 2371 | name 2372 | variable.other.field.erlang 2373 | 2374 | 2375 | match 2376 | (#)\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+')\s*+(\.)\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+') 2377 | name 2378 | meta.record-usage.erlang 2379 | 2380 | 2381 | begin 2382 | (#)\s*+([a-z][a-zA-Z\d@_]*+|'[^']*+') 2383 | beginCaptures 2384 | 2385 | 1 2386 | 2387 | name 2388 | keyword.operator.record.erlang 2389 | 2390 | 2 2391 | 2392 | name 2393 | entity.name.type.class.record.erlang 2394 | 2395 | 2396 | end 2397 | ((\})) 2398 | endCaptures 2399 | 2400 | 1 2401 | 2402 | name 2403 | meta.structure.record.erlang 2404 | 2405 | 2 2406 | 2407 | name 2408 | punctuation.definition.class.record.end.erlang 2409 | 2410 | 2411 | name 2412 | meta.record-usage.erlang 2413 | patterns 2414 | 2415 | 2416 | include 2417 | #internal-record-body 2418 | 2419 | 2420 | 2421 | 2422 | 2423 | string 2424 | 2425 | begin 2426 | (") 2427 | beginCaptures 2428 | 2429 | 1 2430 | 2431 | name 2432 | punctuation.definition.string.begin.erlang 2433 | 2434 | 2435 | end 2436 | (") 2437 | endCaptures 2438 | 2439 | 1 2440 | 2441 | name 2442 | punctuation.definition.string.end.erlang 2443 | 2444 | 2445 | name 2446 | string.quoted.double.erlang 2447 | patterns 2448 | 2449 | 2450 | captures 2451 | 2452 | 1 2453 | 2454 | name 2455 | punctuation.definition.escape.erlang 2456 | 2457 | 3 2458 | 2459 | name 2460 | punctuation.definition.escape.erlang 2461 | 2462 | 2463 | match 2464 | (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}) 2465 | name 2466 | constant.character.escape.erlang 2467 | 2468 | 2469 | match 2470 | \\\^?.? 2471 | name 2472 | invalid.illegal.string.erlang 2473 | 2474 | 2475 | captures 2476 | 2477 | 1 2478 | 2479 | name 2480 | punctuation.definition.placeholder.erlang 2481 | 2482 | 10 2483 | 2484 | name 2485 | punctuation.separator.placeholder-parts.erlang 2486 | 2487 | 12 2488 | 2489 | name 2490 | punctuation.separator.placeholder-parts.erlang 2491 | 2492 | 3 2493 | 2494 | name 2495 | punctuation.separator.placeholder-parts.erlang 2496 | 2497 | 4 2498 | 2499 | name 2500 | punctuation.separator.placeholder-parts.erlang 2501 | 2502 | 6 2503 | 2504 | name 2505 | punctuation.separator.placeholder-parts.erlang 2506 | 2507 | 8 2508 | 2509 | name 2510 | punctuation.separator.placeholder-parts.erlang 2511 | 2512 | 2513 | match 2514 | (~)((\-)?\d++|(\*))?((\.)(\d++|(\*)))?((\.)((\*)|.))?[~cfegswpWPBX#bx\+ni] 2515 | name 2516 | constant.other.placeholder.erlang 2517 | 2518 | 2519 | captures 2520 | 2521 | 1 2522 | 2523 | name 2524 | punctuation.definition.placeholder.erlang 2525 | 2526 | 2 2527 | 2528 | name 2529 | punctuation.separator.placeholder-parts.erlang 2530 | 2531 | 2532 | match 2533 | (~)(\*)?(\d++)?[~du\-#fsacl] 2534 | name 2535 | constant.other.placeholder.erlang 2536 | 2537 | 2538 | match 2539 | ~.? 2540 | name 2541 | invalid.illegal.string.erlang 2542 | 2543 | 2544 | 2545 | symbolic-operator 2546 | 2547 | match 2548 | \+\+|\+|--|-|\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|:: 2549 | name 2550 | keyword.operator.symbolic.erlang 2551 | 2552 | textual-operator 2553 | 2554 | match 2555 | \b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\b 2556 | name 2557 | keyword.operator.textual.erlang 2558 | 2559 | tuple 2560 | 2561 | begin 2562 | (\{) 2563 | beginCaptures 2564 | 2565 | 1 2566 | 2567 | name 2568 | punctuation.definition.tuple.begin.erlang 2569 | 2570 | 2571 | end 2572 | (\}) 2573 | endCaptures 2574 | 2575 | 1 2576 | 2577 | name 2578 | punctuation.definition.tuple.end.erlang 2579 | 2580 | 2581 | name 2582 | meta.structure.tuple.erlang 2583 | patterns 2584 | 2585 | 2586 | match 2587 | , 2588 | name 2589 | punctuation.separator.tuple.erlang 2590 | 2591 | 2592 | include 2593 | #everything-else 2594 | 2595 | 2596 | 2597 | variable 2598 | 2599 | captures 2600 | 2601 | 1 2602 | 2603 | name 2604 | variable.other.erlang 2605 | 2606 | 2 2607 | 2608 | name 2609 | variable.language.omitted.erlang 2610 | 2611 | 2612 | match 2613 | (_[a-zA-Z\d@_]++|[A-Z][a-zA-Z\d@_]*+)|(_) 2614 | 2615 | 2616 | scopeName 2617 | source.erlang 2618 | uuid 2619 | 58EA597D-5158-4BF7-9FB2-B05135D1E166 2620 | 2621 | --------------------------------------------------------------------------------