diff --git a/package.json b/package.json
index 291797c..2199239 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,9 @@
],
"main": "./out/extension.js",
"contributes": {
+ "configurationDefaults": {
+ "editor.snippetSuggestions": "top"
+ },
"languages": [
{
"id": "tpl",
@@ -61,6 +64,48 @@
"scopeName": "source.js.tpl",
"path": "./syntaxes/js-tpl.tmLanguage.json"
}
+ ],
+ "snippets": [
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-stuff.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-tags-builtin.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-tags-module.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-filters.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-actions.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-global-vars.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-models.code-snippets"
+ },
+ {
+ "language": "tpl",
+ "path": "./snippets/tpl-validators.code-snippets"
+ },
+ {
+ "language": "erlang",
+ "path": "./snippets/erlang-stuff.code-snippets"
+ },
+ {
+ "language": "erlang",
+ "path": "./snippets/erlang-observers.code-snippets"
+ }
]
},
"scripts": {
diff --git a/snippets/erlang-observers.code-snippets b/snippets/erlang-observers.code-snippets
new file mode 100644
index 0000000..238ad3e
--- /dev/null
+++ b/snippets/erlang-observers.code-snippets
@@ -0,0 +1,1280 @@
+{
+ "dispatch_host": {
+ "scope": "erlang",
+ "description": "dispatch_host",
+ "prefix": "obs_dispatch_host",
+ "body": [
+ "observe_dispatch_host(#dispatch_host{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "dispatch": {
+ "scope": "erlang",
+ "description": "dispatch",
+ "prefix": "obs_dispatch",
+ "body": [
+ "observe_dispatch(#dispatch{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "security_headers": {
+ "scope": "erlang",
+ "description": "security_headers",
+ "prefix": "obs_security_headers",
+ "body": [
+ "observe_security_headers(#security_headers{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "cors_headers": {
+ "scope": "erlang",
+ "description": "cors_headers",
+ "prefix": "obs_cors_headers",
+ "body": [
+ "observe_cors_headers(#cors_headers{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "resource_headers": {
+ "scope": "erlang",
+ "description": "resource_headers",
+ "prefix": "obs_resource_headers",
+ "body": [
+ "observe_resource_headers(#resource_headers{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "http_log_access": {
+ "scope": "erlang",
+ "description": "http_log_access",
+ "prefix": "obs_http_log_access",
+ "body": [
+ "observe_http_log_access(#http_log_access{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "module_activate": {
+ "scope": "erlang",
+ "description": "module_activate",
+ "prefix": "obs_module_activate",
+ "body": [
+ "observe_module_activate(#module_activate{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "module_deactivate": {
+ "scope": "erlang",
+ "description": "module_deactivate",
+ "prefix": "obs_module_deactivate",
+ "body": [
+ "observe_module_deactivate(#module_deactivate{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "content_types_dispatch": {
+ "scope": "erlang",
+ "description": "content_types_dispatch",
+ "prefix": "obs_content_types_dispatch",
+ "body": [
+ "observe_content_types_dispatch(#content_types_dispatch{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "logon_ready_page": {
+ "scope": "erlang",
+ "description": "logon_ready_page",
+ "prefix": "obs_logon_ready_page",
+ "body": [
+ "observe_logon_ready_page(#logon_ready_page{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "logon_submit": {
+ "scope": "erlang",
+ "description": "logon_submit",
+ "prefix": "obs_logon_submit",
+ "body": [
+ "observe_logon_submit(#logon_submit{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "logon_options": {
+ "scope": "erlang",
+ "description": "logon_options",
+ "prefix": "obs_logon_options",
+ "body": [
+ "observe_logon_options(#logon_options{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "identity_verification": {
+ "scope": "erlang",
+ "description": "identity_verification",
+ "prefix": "obs_identity_verification",
+ "body": [
+ "observe_identity_verification(#identity_verification{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "identity_verified": {
+ "scope": "erlang",
+ "description": "identity_verified",
+ "prefix": "obs_identity_verified",
+ "body": [
+ "observe_identity_verified(#identity_verified{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "identity_password_match": {
+ "scope": "erlang",
+ "description": "identity_password_match",
+ "prefix": "obs_identity_password_match",
+ "body": [
+ "observe_identity_password_match(#identity_password_match{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_url": {
+ "scope": "erlang",
+ "description": "signup_url",
+ "prefix": "obs_signup_url",
+ "body": [
+ "observe_signup_url(#signup_url{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup": {
+ "scope": "erlang",
+ "description": "signup",
+ "prefix": "obs_signup",
+ "body": [
+ "observe_signup(#signup{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_failed_url": {
+ "scope": "erlang",
+ "description": "signup_failed_url",
+ "prefix": "obs_signup_failed_url",
+ "body": [
+ "observe_signup_failed_url(#signup_failed_url{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_check": {
+ "scope": "erlang",
+ "description": "signup_check",
+ "prefix": "obs_signup_check",
+ "body": [
+ "observe_signup_check(#signup_check{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_done": {
+ "scope": "erlang",
+ "description": "signup_done",
+ "prefix": "obs_signup_done",
+ "body": [
+ "observe_signup_done(#signup_done{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_confirm": {
+ "scope": "erlang",
+ "description": "signup_confirm",
+ "prefix": "obs_signup_confirm",
+ "body": [
+ "observe_signup_confirm(#signup_confirm{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "signup_confirm_redirect": {
+ "scope": "erlang",
+ "description": "signup_confirm_redirect",
+ "prefix": "obs_signup_confirm_redirect",
+ "body": [
+ "observe_signup_confirm_redirect(#signup_confirm_redirect{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "comment_insert": {
+ "scope": "erlang",
+ "description": "comment_insert",
+ "prefix": "obs_comment_insert",
+ "body": [
+ "observe_comment_insert(#comment_insert{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "language": {
+ "scope": "erlang",
+ "description": "language",
+ "prefix": "obs_language",
+ "body": [
+ "observe_language(#language{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "set_user_language": {
+ "scope": "erlang",
+ "description": "set_user_language",
+ "prefix": "obs_set_user_language",
+ "body": [
+ "observe_set_user_language(#set_user_language{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "url_abs": {
+ "scope": "erlang",
+ "description": "url_abs",
+ "prefix": "obs_url_abs",
+ "body": [
+ "observe_url_abs(#url_abs{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "url_rewrite": {
+ "scope": "erlang",
+ "description": "url_rewrite",
+ "prefix": "obs_url_rewrite",
+ "body": [
+ "observe_url_rewrite(#url_rewrite{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "dispatch_rewrite": {
+ "scope": "erlang",
+ "description": "dispatch_rewrite",
+ "prefix": "obs_dispatch_rewrite",
+ "body": [
+ "observe_dispatch_rewrite(#dispatch_rewrite{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "ssl_options": {
+ "scope": "erlang",
+ "description": "ssl_options",
+ "prefix": "obs_ssl_options",
+ "body": [
+ "observe_ssl_options(#ssl_options{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "admin_edit_blocks": {
+ "scope": "erlang",
+ "description": "admin_edit_blocks",
+ "prefix": "obs_admin_edit_blocks",
+ "body": [
+ "observe_admin_edit_blocks(#admin_edit_blocks{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "admin_rscform": {
+ "scope": "erlang",
+ "description": "admin_rscform",
+ "prefix": "obs_admin_rscform",
+ "body": [
+ "observe_admin_rscform(#admin_rscform{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "admin_menu": {
+ "scope": "erlang",
+ "description": "admin_menu",
+ "prefix": "obs_admin_menu",
+ "body": [
+ "observe_admin_menu(#admin_menu{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "menu_rsc": {
+ "scope": "erlang",
+ "description": "menu_rsc",
+ "prefix": "obs_menu_rsc",
+ "body": [
+ "observe_menu_rsc(#menu_rsc{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "output_html": {
+ "scope": "erlang",
+ "description": "output_html",
+ "prefix": "obs_output_html",
+ "body": [
+ "observe_output_html(#output_html{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "activity": {
+ "scope": "erlang",
+ "description": "activity",
+ "prefix": "obs_activity",
+ "body": [
+ "observe_activity(#activity{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "activity_send": {
+ "scope": "erlang",
+ "description": "activity_send",
+ "prefix": "obs_activity_send",
+ "body": [
+ "observe_activity_send(#activity_send{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_received": {
+ "scope": "erlang",
+ "description": "email_received",
+ "prefix": "obs_email_received",
+ "body": [
+ "observe_email_received(#email_received{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_is_blocked": {
+ "scope": "erlang",
+ "description": "email_is_blocked",
+ "prefix": "obs_email_is_blocked",
+ "body": [
+ "observe_email_is_blocked(#email_is_blocked{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_status": {
+ "scope": "erlang",
+ "description": "email_status",
+ "prefix": "obs_email_status",
+ "body": [
+ "observe_email_status(#email_status{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_bounced": {
+ "scope": "erlang",
+ "description": "email_bounced",
+ "prefix": "obs_email_bounced",
+ "body": [
+ "observe_email_bounced(#email_bounced{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_sent": {
+ "scope": "erlang",
+ "description": "email_sent",
+ "prefix": "obs_email_sent",
+ "body": [
+ "observe_email_sent(#email_sent{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_failed": {
+ "scope": "erlang",
+ "description": "email_failed",
+ "prefix": "obs_email_failed",
+ "body": [
+ "observe_email_failed(#email_failed{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_dkim_options": {
+ "scope": "erlang",
+ "description": "email_dkim_options",
+ "prefix": "obs_email_dkim_options",
+ "body": [
+ "observe_email_dkim_options(#email_dkim_options{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_send_encoded": {
+ "scope": "erlang",
+ "description": "email_send_encoded",
+ "prefix": "obs_email_send_encoded",
+ "body": [
+ "observe_email_send_encoded(#email_send_encoded{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_add_handler": {
+ "scope": "erlang",
+ "description": "email_add_handler",
+ "prefix": "obs_email_add_handler",
+ "body": [
+ "observe_email_add_handler(#email_add_handler{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_ensure_handler": {
+ "scope": "erlang",
+ "description": "email_ensure_handler",
+ "prefix": "obs_email_ensure_handler",
+ "body": [
+ "observe_email_ensure_handler(#email_ensure_handler{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "email_drop_handler": {
+ "scope": "erlang",
+ "description": "email_drop_handler",
+ "prefix": "obs_email_drop_handler",
+ "body": [
+ "observe_email_drop_handler(#email_drop_handler{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "mailinglist_mailing": {
+ "scope": "erlang",
+ "description": "mailinglist_mailing",
+ "prefix": "obs_mailinglist_mailing",
+ "body": [
+ "observe_mailinglist_mailing(#mailinglist_mailing{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "mailinglist_message": {
+ "scope": "erlang",
+ "description": "mailinglist_message",
+ "prefix": "obs_mailinglist_message",
+ "body": [
+ "observe_mailinglist_message(#mailinglist_message{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "category_hierarchy_save": {
+ "scope": "erlang",
+ "description": "category_hierarchy_save",
+ "prefix": "obs_category_hierarchy_save",
+ "body": [
+ "observe_category_hierarchy_save(#category_hierarchy_save{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "menu_save": {
+ "scope": "erlang",
+ "description": "menu_save",
+ "prefix": "obs_menu_save",
+ "body": [
+ "observe_menu_save(#menu_save{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "hierarchy_updated": {
+ "scope": "erlang",
+ "description": "hierarchy_updated",
+ "prefix": "obs_hierarchy_updated",
+ "body": [
+ "observe_hierarchy_updated(#hierarchy_updated{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_get": {
+ "scope": "erlang",
+ "description": "rsc_get",
+ "prefix": "obs_rsc_get",
+ "body": [
+ "observe_rsc_get(#rsc_get{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_delete": {
+ "scope": "erlang",
+ "description": "rsc_delete",
+ "prefix": "obs_rsc_delete",
+ "body": [
+ "observe_rsc_delete(#rsc_delete{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_insert": {
+ "scope": "erlang",
+ "description": "rsc_insert",
+ "prefix": "obs_rsc_insert",
+ "body": [
+ "observe_rsc_insert(#rsc_insert{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_merge": {
+ "scope": "erlang",
+ "description": "rsc_merge",
+ "prefix": "obs_rsc_merge",
+ "body": [
+ "observe_rsc_merge(#rsc_merge{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_update": {
+ "scope": "erlang",
+ "description": "rsc_update",
+ "prefix": "obs_rsc_update",
+ "body": [
+ "observe_rsc_update(#rsc_update{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_update_done": {
+ "scope": "erlang",
+ "description": "rsc_update_done",
+ "prefix": "obs_rsc_update_done",
+ "body": [
+ "observe_rsc_update_done(#rsc_update_done{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_upload": {
+ "scope": "erlang",
+ "description": "rsc_upload",
+ "prefix": "obs_rsc_upload",
+ "body": [
+ "observe_rsc_upload(#rsc_upload{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "custom_pivot": {
+ "scope": "erlang",
+ "description": "custom_pivot",
+ "prefix": "obs_custom_pivot",
+ "body": [
+ "observe_custom_pivot(#custom_pivot{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "pivot_rsc_data": {
+ "scope": "erlang",
+ "description": "pivot_rsc_data",
+ "prefix": "obs_pivot_rsc_data",
+ "body": [
+ "observe_pivot_rsc_data(#pivot_rsc_data{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "pivot_update": {
+ "scope": "erlang",
+ "description": "pivot_update",
+ "prefix": "obs_pivot_update",
+ "body": [
+ "observe_pivot_update(#pivot_update{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "pivot_fields": {
+ "scope": "erlang",
+ "description": "pivot_fields",
+ "prefix": "obs_pivot_fields",
+ "body": [
+ "observe_pivot_fields(#pivot_fields{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_pivot_done": {
+ "scope": "erlang",
+ "description": "rsc_pivot_done",
+ "prefix": "obs_rsc_pivot_done",
+ "body": [
+ "observe_rsc_pivot_done(#rsc_pivot_done{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "sanitize_element": {
+ "scope": "erlang",
+ "description": "sanitize_element",
+ "prefix": "obs_sanitize_element",
+ "body": [
+ "observe_sanitize_element(#sanitize_element{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "sanitize_embed_url": {
+ "scope": "erlang",
+ "description": "sanitize_embed_url",
+ "prefix": "obs_sanitize_embed_url",
+ "body": [
+ "observe_sanitize_embed_url(#sanitize_embed_url{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_is_owner": {
+ "scope": "erlang",
+ "description": "acl_is_owner",
+ "prefix": "obs_acl_is_owner",
+ "body": [
+ "observe_acl_is_owner(#acl_is_owner{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_is_allowed": {
+ "scope": "erlang",
+ "description": "acl_is_allowed",
+ "prefix": "obs_acl_is_allowed",
+ "body": [
+ "observe_acl_is_allowed(#acl_is_allowed{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_is_allowed_prop": {
+ "scope": "erlang",
+ "description": "acl_is_allowed_prop",
+ "prefix": "obs_acl_is_allowed_prop",
+ "body": [
+ "observe_acl_is_allowed_prop(#acl_is_allowed_prop{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_context_authenticated": {
+ "scope": "erlang",
+ "description": "acl_context_authenticated",
+ "prefix": "obs_acl_context_authenticated",
+ "body": [
+ "observe_acl_context_authenticated(#acl_context_authenticated{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_logon": {
+ "scope": "erlang",
+ "description": "acl_logon",
+ "prefix": "obs_acl_logon",
+ "body": [
+ "observe_acl_logon(#acl_logon{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_logoff": {
+ "scope": "erlang",
+ "description": "acl_logoff",
+ "prefix": "obs_acl_logoff",
+ "body": [
+ "observe_acl_logoff(#acl_logoff{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "acl_user_groups": {
+ "scope": "erlang",
+ "description": "acl_user_groups",
+ "prefix": "obs_acl_user_groups",
+ "body": [
+ "observe_acl_user_groups(#acl_user_groups{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_confirm": {
+ "scope": "erlang",
+ "description": "auth_confirm",
+ "prefix": "obs_auth_confirm",
+ "body": [
+ "observe_auth_confirm(#auth_confirm{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_confirm_done": {
+ "scope": "erlang",
+ "description": "auth_confirm_done",
+ "prefix": "obs_auth_confirm_done",
+ "body": [
+ "observe_auth_confirm_done(#auth_confirm_done{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_precheck": {
+ "scope": "erlang",
+ "description": "auth_precheck",
+ "prefix": "obs_auth_precheck",
+ "body": [
+ "observe_auth_precheck(#auth_precheck{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_postcheck": {
+ "scope": "erlang",
+ "description": "auth_postcheck",
+ "prefix": "obs_auth_postcheck",
+ "body": [
+ "observe_auth_postcheck(#auth_postcheck{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_checked": {
+ "scope": "erlang",
+ "description": "auth_checked",
+ "prefix": "obs_auth_checked",
+ "body": [
+ "observe_auth_checked(#auth_checked{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_reset": {
+ "scope": "erlang",
+ "description": "auth_reset",
+ "prefix": "obs_auth_reset",
+ "body": [
+ "observe_auth_reset(#auth_reset{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_validate": {
+ "scope": "erlang",
+ "description": "auth_validate",
+ "prefix": "obs_auth_validate",
+ "body": [
+ "observe_auth_validate(#auth_validate{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_logon": {
+ "scope": "erlang",
+ "description": "auth_logon",
+ "prefix": "obs_auth_logon",
+ "body": [
+ "observe_auth_logon(#auth_logon{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_logoff": {
+ "scope": "erlang",
+ "description": "auth_logoff",
+ "prefix": "obs_auth_logoff",
+ "body": [
+ "observe_auth_logoff(#auth_logoff{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_validated": {
+ "scope": "erlang",
+ "description": "auth_validated",
+ "prefix": "obs_auth_validated",
+ "body": [
+ "observe_auth_validated(#auth_validated{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_options_update": {
+ "scope": "erlang",
+ "description": "auth_options_update",
+ "prefix": "obs_auth_options_update",
+ "body": [
+ "observe_auth_options_update(#auth_options_update{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_client_logon_user": {
+ "scope": "erlang",
+ "description": "auth_client_logon_user",
+ "prefix": "obs_auth_client_logon_user",
+ "body": [
+ "observe_auth_client_logon_user(#auth_client_logon_user{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "auth_client_switch_user": {
+ "scope": "erlang",
+ "description": "auth_client_switch_user",
+ "prefix": "obs_auth_client_switch_user",
+ "body": [
+ "observe_auth_client_switch_user(#auth_client_switch_user{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "request_context": {
+ "scope": "erlang",
+ "description": "request_context",
+ "prefix": "obs_request_context",
+ "body": [
+ "observe_request_context(#request_context{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "session_context": {
+ "scope": "erlang",
+ "description": "session_context",
+ "prefix": "obs_session_context",
+ "body": [
+ "observe_session_context(#session_context{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "validate_query_args": {
+ "scope": "erlang",
+ "description": "validate_query_args",
+ "prefix": "obs_validate_query_args",
+ "body": [
+ "observe_validate_query_args(#validate_query_args{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "user_is_enabled": {
+ "scope": "erlang",
+ "description": "user_is_enabled",
+ "prefix": "obs_user_is_enabled",
+ "body": [
+ "observe_user_is_enabled(#user_is_enabled{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "user_context": {
+ "scope": "erlang",
+ "description": "user_context",
+ "prefix": "obs_user_context",
+ "body": [
+ "observe_user_context(#user_context{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "service_authorize": {
+ "scope": "erlang",
+ "description": "service_authorize",
+ "prefix": "obs_service_authorize",
+ "body": [
+ "observe_service_authorize(#service_authorize{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "page_url": {
+ "scope": "erlang",
+ "description": "page_url",
+ "prefix": "obs_page_url",
+ "body": [
+ "observe_page_url(#page_url{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "search_query": {
+ "scope": "erlang",
+ "description": "search_query",
+ "prefix": "obs_search_query",
+ "body": [
+ "observe_search_query(#search_query{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "edge_insert": {
+ "scope": "erlang",
+ "description": "edge_insert",
+ "prefix": "obs_edge_insert",
+ "body": [
+ "observe_edge_insert(#edge_insert{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "edge_delete": {
+ "scope": "erlang",
+ "description": "edge_delete",
+ "prefix": "obs_edge_delete",
+ "body": [
+ "observe_edge_delete(#edge_delete{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "edge_update": {
+ "scope": "erlang",
+ "description": "edge_update",
+ "prefix": "obs_edge_update",
+ "body": [
+ "observe_edge_update(#edge_update{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "m_config_update": {
+ "scope": "erlang",
+ "description": "m_config_update",
+ "prefix": "obs_m_config_update",
+ "body": [
+ "observe_m_config_update(#m_config_update{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "m_config_update_prop": {
+ "scope": "erlang",
+ "description": "m_config_update_prop",
+ "prefix": "obs_m_config_update_prop",
+ "body": [
+ "observe_m_config_update_prop(#m_config_update_prop{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_import_fetch": {
+ "scope": "erlang",
+ "description": "rsc_import_fetch",
+ "prefix": "obs_rsc_import_fetch",
+ "body": [
+ "observe_rsc_import_fetch(#rsc_import_fetch{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_import": {
+ "scope": "erlang",
+ "description": "media_import",
+ "prefix": "obs_media_import",
+ "body": [
+ "observe_media_import(#media_import{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_import_props": {
+ "scope": "erlang",
+ "description": "media_import_props",
+ "prefix": "obs_media_import_props",
+ "body": [
+ "observe_media_import_props(#media_import_props{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_upload_preprocess": {
+ "scope": "erlang",
+ "description": "media_upload_preprocess",
+ "prefix": "obs_media_upload_preprocess",
+ "body": [
+ "observe_media_upload_preprocess(#media_upload_preprocess{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_upload_props": {
+ "scope": "erlang",
+ "description": "media_upload_props",
+ "prefix": "obs_media_upload_props",
+ "body": [
+ "observe_media_upload_props(#media_upload_props{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_upload_rsc_props": {
+ "scope": "erlang",
+ "description": "media_upload_rsc_props",
+ "prefix": "obs_media_upload_rsc_props",
+ "body": [
+ "observe_media_upload_rsc_props(#media_upload_rsc_props{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_import_medium": {
+ "scope": "erlang",
+ "description": "media_import_medium",
+ "prefix": "obs_media_import_medium",
+ "body": [
+ "observe_media_import_medium(#media_import_medium{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_replace_file": {
+ "scope": "erlang",
+ "description": "media_replace_file",
+ "prefix": "obs_media_replace_file",
+ "body": [
+ "observe_media_replace_file(#media_replace_file{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_update_done": {
+ "scope": "erlang",
+ "description": "media_update_done",
+ "prefix": "obs_media_update_done",
+ "body": [
+ "observe_media_update_done(#media_update_done{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_preview_options": {
+ "scope": "erlang",
+ "description": "media_preview_options",
+ "prefix": "obs_media_preview_options",
+ "body": [
+ "observe_media_preview_options(#media_preview_options{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "rsc_query_item": {
+ "scope": "erlang",
+ "description": "rsc_query_item",
+ "prefix": "obs_rsc_query_item",
+ "body": [
+ "observe_rsc_query_item(#rsc_query_item{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "scomp_script_render": {
+ "scope": "erlang",
+ "description": "scomp_script_render",
+ "prefix": "obs_scomp_script_render",
+ "body": [
+ "observe_scomp_script_render(#scomp_script_render{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "action_event_type": {
+ "scope": "erlang",
+ "description": "action_event_type",
+ "prefix": "obs_action_event_type",
+ "body": [
+ "observe_action_event_type(#action_event_type{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "import_csv_definition": {
+ "scope": "erlang",
+ "description": "import_csv_definition",
+ "prefix": "obs_import_csv_definition",
+ "body": [
+ "observe_import_csv_definition(#import_csv_definition{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "multiupload": {
+ "scope": "erlang",
+ "description": "multiupload",
+ "prefix": "obs_multiupload",
+ "body": [
+ "observe_multiupload(#multiupload{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "dropbox_file": {
+ "scope": "erlang",
+ "description": "dropbox_file",
+ "prefix": "obs_dropbox_file",
+ "body": [
+ "observe_dropbox_file(#dropbox_file{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_identify_file": {
+ "scope": "erlang",
+ "description": "media_identify_file",
+ "prefix": "obs_media_identify_file",
+ "body": [
+ "observe_media_identify_file(#media_identify_file{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_identify_extension": {
+ "scope": "erlang",
+ "description": "media_identify_extension",
+ "prefix": "obs_media_identify_extension",
+ "body": [
+ "observe_media_identify_extension(#media_identify_extension{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_viewer": {
+ "scope": "erlang",
+ "description": "media_viewer",
+ "prefix": "obs_media_viewer",
+ "body": [
+ "observe_media_viewer(#media_viewer{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "media_stillimage": {
+ "scope": "erlang",
+ "description": "media_stillimage",
+ "prefix": "obs_media_stillimage",
+ "body": [
+ "observe_media_stillimage(#media_stillimage{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "survey_get_handlers": {
+ "scope": "erlang",
+ "description": "survey_get_handlers",
+ "prefix": "obs_survey_get_handlers",
+ "body": [
+ "observe_survey_get_handlers(#survey_get_handlers{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "survey_submit": {
+ "scope": "erlang",
+ "description": "survey_submit",
+ "prefix": "obs_survey_submit",
+ "body": [
+ "observe_survey_submit(#survey_submit{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "survey_is_allowed_results_download": {
+ "scope": "erlang",
+ "description": "survey_is_allowed_results_download",
+ "prefix": "obs_survey_is_allowed_results_download",
+ "body": [
+ "observe_survey_is_allowed_results_download(#survey_is_allowed_results_download{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "survey_is_submit": {
+ "scope": "erlang",
+ "description": "survey_is_submit",
+ "prefix": "obs_survey_is_submit",
+ "body": [
+ "observe_survey_is_submit(#survey_is_submit{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "tkvstore_put": {
+ "scope": "erlang",
+ "description": "tkvstore_put",
+ "prefix": "obs_tkvstore_put",
+ "body": [
+ "observe_tkvstore_put(#tkvstore_put{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "tkvstore_get": {
+ "scope": "erlang",
+ "description": "tkvstore_get",
+ "prefix": "obs_tkvstore_get",
+ "body": [
+ "observe_tkvstore_get(#tkvstore_get{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "tkvstore_delete": {
+ "scope": "erlang",
+ "description": "tkvstore_delete",
+ "prefix": "obs_tkvstore_delete",
+ "body": [
+ "observe_tkvstore_delete(#tkvstore_delete{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "debug_stream": {
+ "scope": "erlang",
+ "description": "debug_stream",
+ "prefix": "obs_debug_stream",
+ "body": [
+ "observe_debug_stream(#debug_stream{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "debug": {
+ "scope": "erlang",
+ "description": "debug",
+ "prefix": "obs_debug",
+ "body": [
+ "observe_debug(#debug{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "filewatcher": {
+ "scope": "erlang",
+ "description": "filewatcher",
+ "prefix": "obs_filewatcher",
+ "body": [
+ "observe_filewatcher(#filewatcher{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "import_resource": {
+ "scope": "erlang",
+ "description": "import_resource",
+ "prefix": "obs_import_resource",
+ "body": [
+ "observe_import_resource(#import_resource{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_content_disposition": {
+ "scope": "erlang",
+ "description": "export_resource_content_disposition",
+ "prefix": "obs_export_resource_content_disposition",
+ "body": [
+ "observe_export_resource_content_disposition(#export_resource_content_disposition{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_visible": {
+ "scope": "erlang",
+ "description": "export_resource_visible",
+ "prefix": "obs_export_resource_visible",
+ "body": [
+ "observe_export_resource_visible(#export_resource_visible{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_content_type": {
+ "scope": "erlang",
+ "description": "export_resource_content_type",
+ "prefix": "obs_export_resource_content_type",
+ "body": [
+ "observe_export_resource_content_type(#export_resource_content_type{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_filename": {
+ "scope": "erlang",
+ "description": "export_resource_filename",
+ "prefix": "obs_export_resource_filename",
+ "body": [
+ "observe_export_resource_filename(#export_resource_filename{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_header": {
+ "scope": "erlang",
+ "description": "export_resource_header",
+ "prefix": "obs_export_resource_header",
+ "body": [
+ "observe_export_resource_header(#export_resource_header{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_data": {
+ "scope": "erlang",
+ "description": "export_resource_data",
+ "prefix": "obs_export_resource_data",
+ "body": [
+ "observe_export_resource_data(#export_resource_data{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_encode": {
+ "scope": "erlang",
+ "description": "export_resource_encode",
+ "prefix": "obs_export_resource_encode",
+ "body": [
+ "observe_export_resource_encode(#export_resource_encode{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "export_resource_footer": {
+ "scope": "erlang",
+ "description": "export_resource_footer",
+ "prefix": "obs_export_resource_footer",
+ "body": [
+ "observe_export_resource_footer(#export_resource_footer{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "postback_notify": {
+ "scope": "erlang",
+ "description": "postback_notify",
+ "prefix": "obs_postback_notify",
+ "body": [
+ "observe_postback_notify(#postback_notify{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "postback_event": {
+ "scope": "erlang",
+ "description": "postback_event",
+ "prefix": "obs_postback_event",
+ "body": [
+ "observe_postback_event(#postback_event{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "url_fetch_options": {
+ "scope": "erlang",
+ "description": "url_fetch_options",
+ "prefix": "obs_url_fetch_options",
+ "body": [
+ "observe_url_fetch_options(#url_fetch_options{$1}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+ "middleware": {
+ "scope": "erlang",
+ "description": "middleware",
+ "prefix": "obs_middleware",
+ "body": [
+ "observe_middleware(#middleware{ on = ${1|request,welformed,handled|} }, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+}
\ No newline at end of file
diff --git a/snippets/erlang-stuff.code-snippets b/snippets/erlang-stuff.code-snippets
new file mode 100644
index 0000000..fa819fb
--- /dev/null
+++ b/snippets/erlang-stuff.code-snippets
@@ -0,0 +1,47 @@
+{
+ "event_postback_args": {
+ "scope": "erlang",
+ "description": "event_postback",
+ "prefix": "event_postback",
+ "body": [
+ "event(#postback{message={$1, Args}}, Context) ->",
+ "\t${0:Context}."
+ ],
+ },
+ "event_postback": {
+ "scope": "erlang",
+ "description": "event_postback",
+ "prefix": "event_postback",
+ "body": [
+ "event(#postback{message=$1, trigger=$2, target=$2}, Context) ->",
+ "\t${0:Context}."
+ ],
+ },
+ "event_submit_args": {
+ "scope": "erlang",
+ "description": "event_submit",
+ "prefix": "event_submit",
+ "body": [
+ "event(#submit{message={$1, Args}}, Context) ->",
+ "\t${0:Context}."
+ ],
+ },
+ "event_submit": {
+ "scope": "erlang",
+ "description": "event_submit",
+ "prefix": "event_submit",
+ "body": [
+ "event(#submit{message=$1, trigger=$2, target=$2}, Context) ->",
+ "\t${0:Context}."
+ ],
+ },
+ "observe": {
+ "scope": "erlang",
+ "description": "observe",
+ "prefix": "observe",
+ "body": [
+ "observe_$1(#$1{$2}, Context, _Context) ->",
+ "\t${0:Context}."
+ ]
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-actions.code-snippets b/snippets/tpl-actions.code-snippets
new file mode 100644
index 0000000..83716fd
--- /dev/null
+++ b/snippets/tpl-actions.code-snippets
@@ -0,0 +1,578 @@
+{
+ "with_args": {
+ "scope": "tpl",
+ "description": "with_args",
+ "prefix": "act_with_args",
+ "body": "action={with_args$0}"
+ },
+ "admin_tasks": {
+ "scope": "tpl",
+ "description": "admin_tasks",
+ "prefix": "act_admin_tasks",
+ "body": "action={admin_tasks$0}"
+ },
+ "redirect_incat": {
+ "scope": "tpl",
+ "description": "redirect_incat",
+ "prefix": "act_redirect_incat",
+ "body": "action={redirect_incat$0}"
+ },
+ "module_rescan": {
+ "scope": "tpl",
+ "description": "module_rescan",
+ "prefix": "act_module_rescan",
+ "body": "action={module_rescan$0}"
+ },
+ "module_toggle": {
+ "scope": "tpl",
+ "description": "module_toggle",
+ "prefix": "act_module_toggle",
+ "body": "action={module_toggle$0}"
+ },
+ "backup_start": {
+ "scope": "tpl",
+ "description": "backup_start",
+ "prefix": "act_backup_start",
+ "body": "action={backup_start$0}"
+ },
+ "config_delete": {
+ "scope": "tpl",
+ "description": "config_delete",
+ "prefix": "act_config_delete",
+ "body": "action={config_delete$0}"
+ },
+ "config_toggle": {
+ "scope": "tpl",
+ "description": "config_toggle",
+ "prefix": "act_config_toggle",
+ "body": "action={config_toggle$0}"
+ },
+ "dialog_config_delete": {
+ "scope": "tpl",
+ "description": "dialog_config_delete",
+ "prefix": "act_dialog_config_delete",
+ "body": "action={dialog_config_delete$0}"
+ },
+ "dialog_config_edit": {
+ "scope": "tpl",
+ "description": "dialog_config_edit",
+ "prefix": "act_dialog_config_edit",
+ "body": "action={dialog_config_edit$0}"
+ },
+ "dialog_config_new": {
+ "scope": "tpl",
+ "description": "dialog_config_new",
+ "prefix": "act_dialog_config_new",
+ "body": "action={dialog_config_new$0}"
+ },
+ "development_templates_stream": {
+ "scope": "tpl",
+ "description": "development_templates_stream",
+ "prefix": "act_development_templates_stream",
+ "body": "action={development_templates_stream$0}"
+ },
+ "dialog": {
+ "scope": "tpl",
+ "description": "dialog",
+ "prefix": "act_dialog",
+ "body": "action={dialog$0}"
+ },
+ "dialog_open": {
+ "scope": "tpl",
+ "description": "dialog_open",
+ "prefix": "act_dialog_open",
+ "body": "action={dialog_open$0}"
+ },
+ "dialog_close": {
+ "scope": "tpl",
+ "description": "dialog_close",
+ "prefix": "act_dialog_close",
+ "body": "action={dialog_close$0}"
+ },
+ "overlay_open": {
+ "scope": "tpl",
+ "description": "overlay_open",
+ "prefix": "act_overlay_open",
+ "body": "action={overlay_open$0}"
+ },
+ "overlay_close": {
+ "scope": "tpl",
+ "description": "overlay_close",
+ "prefix": "act_overlay_close",
+ "body": "action={overlay_close$0}"
+ },
+ "add_class": {
+ "scope": "tpl",
+ "description": "add_class",
+ "prefix": "act_add_class",
+ "body": "action={add_class$0}"
+ },
+ "animate": {
+ "scope": "tpl",
+ "description": "animate",
+ "prefix": "act_animate",
+ "body": "action={animate$0}"
+ },
+ "buttonize": {
+ "scope": "tpl",
+ "description": "buttonize",
+ "prefix": "act_buttonize",
+ "body": "action={buttonize$0}"
+ },
+ "effect": {
+ "scope": "tpl",
+ "description": "effect",
+ "prefix": "act_effect",
+ "body": "action={effect$0}"
+ },
+ "fade_in": {
+ "scope": "tpl",
+ "description": "fade_in",
+ "prefix": "act_fade_in",
+ "body": "action={fade_in$0}"
+ },
+ "fade_out": {
+ "scope": "tpl",
+ "description": "fade_out",
+ "prefix": "act_fade_out",
+ "body": "action={fade_out$0}"
+ },
+ "hide": {
+ "scope": "tpl",
+ "description": "hide",
+ "prefix": "act_hide",
+ "body": "action={hide$0}"
+ },
+ "insert_after": {
+ "scope": "tpl",
+ "description": "insert_after",
+ "prefix": "act_insert_after",
+ "body": "action={insert_after$0}"
+ },
+ "insert_before": {
+ "scope": "tpl",
+ "description": "insert_before",
+ "prefix": "act_insert_before",
+ "body": "action={insert_before$0}"
+ },
+ "insert_bottom": {
+ "scope": "tpl",
+ "description": "insert_bottom",
+ "prefix": "act_insert_bottom",
+ "body": "action={insert_bottom$0}"
+ },
+ "insert_top": {
+ "scope": "tpl",
+ "description": "insert_top",
+ "prefix": "act_insert_top",
+ "body": "action={insert_top$0}"
+ },
+ "jquery_effect": {
+ "scope": "tpl",
+ "description": "jquery_effect",
+ "prefix": "act_jquery_effect",
+ "body": "action={jquery_effect$0}"
+ },
+ "mask": {
+ "scope": "tpl",
+ "description": "mask",
+ "prefix": "act_mask",
+ "body": "action={mask$0}"
+ },
+ "mask_progress": {
+ "scope": "tpl",
+ "description": "mask_progress",
+ "prefix": "act_mask_progress",
+ "body": "action={mask_progress$0}"
+ },
+ "move": {
+ "scope": "tpl",
+ "description": "move",
+ "prefix": "act_move",
+ "body": "action={move$0}"
+ },
+ "remove": {
+ "scope": "tpl",
+ "description": "remove",
+ "prefix": "act_remove",
+ "body": "action={remove$0}"
+ },
+ "remove_class": {
+ "scope": "tpl",
+ "description": "remove_class",
+ "prefix": "act_remove_class",
+ "body": "action={remove_class$0}"
+ },
+ "replace": {
+ "scope": "tpl",
+ "description": "replace",
+ "prefix": "act_replace",
+ "body": "action={replace$0}"
+ },
+ "set_class": {
+ "scope": "tpl",
+ "description": "set_class",
+ "prefix": "act_set_class",
+ "body": "action={set_class$0}"
+ },
+ "show": {
+ "scope": "tpl",
+ "description": "show",
+ "prefix": "act_show",
+ "body": "action={show$0}"
+ },
+ "slide_down": {
+ "scope": "tpl",
+ "description": "slide_down",
+ "prefix": "act_slide_down",
+ "body": "action={slide_down$0}"
+ },
+ "slide_fade_in": {
+ "scope": "tpl",
+ "description": "slide_fade_in",
+ "prefix": "act_slide_fade_in",
+ "body": "action={slide_fade_in$0}"
+ },
+ "slide_fade_out": {
+ "scope": "tpl",
+ "description": "slide_fade_out",
+ "prefix": "act_slide_fade_out",
+ "body": "action={slide_fade_out$0}"
+ },
+ "slide_toggle": {
+ "scope": "tpl",
+ "description": "slide_toggle",
+ "prefix": "act_slide_toggle",
+ "body": "action={slide_toggle$0}"
+ },
+ "slide_up": {
+ "scope": "tpl",
+ "description": "slide_up",
+ "prefix": "act_slide_up",
+ "body": "action={slide_up$0}"
+ },
+ "toggle": {
+ "scope": "tpl",
+ "description": "toggle",
+ "prefix": "act_toggle",
+ "body": "action={toggle$0}"
+ },
+ "toggle_class": {
+ "scope": "tpl",
+ "description": "toggle_class",
+ "prefix": "act_toggle_class",
+ "body": "action={toggle_class$0}"
+ },
+ "unmask": {
+ "scope": "tpl",
+ "description": "unmask",
+ "prefix": "act_unmask",
+ "body": "action={unmask$0}"
+ },
+ "update": {
+ "scope": "tpl",
+ "description": "update",
+ "prefix": "act_update",
+ "body": "action={update$0}"
+ },
+ "update_iframe": {
+ "scope": "tpl",
+ "description": "update_iframe",
+ "prefix": "act_update_iframe",
+ "body": "action={update_iframe$0}"
+ },
+ "editor_add": {
+ "scope": "tpl",
+ "description": "editor_add",
+ "prefix": "act_editor_add",
+ "body": "action={editor_add$0}"
+ },
+ "editor_remove": {
+ "scope": "tpl",
+ "description": "editor_remove",
+ "prefix": "act_editor_remove",
+ "body": "action={editor_remove$0}"
+ },
+ "zlink": {
+ "scope": "tpl",
+ "description": "zlink",
+ "prefix": "act_zlink",
+ "body": "action={zlink$0}"
+ },
+ "zmedia": {
+ "scope": "tpl",
+ "description": "zmedia",
+ "prefix": "act_zmedia",
+ "body": "action={zmedia$0}"
+ },
+ "zmedia_choose": {
+ "scope": "tpl",
+ "description": "zmedia_choose",
+ "prefix": "act_zmedia_choose",
+ "body": "action={zmedia_choose$0}"
+ },
+ "zmedia_has_chosen": {
+ "scope": "tpl",
+ "description": "zmedia_has_chosen",
+ "prefix": "act_zmedia_has_chosen",
+ "body": "action={zmedia_has_chosen$0}"
+ },
+ "notify": {
+ "scope": "tpl",
+ "description": "notify",
+ "prefix": "act_notify",
+ "body": "action={notify$0}"
+ },
+ "postback": {
+ "scope": "tpl",
+ "description": "postback",
+ "prefix": "act_postback",
+ "body": "action={postback$0}"
+ },
+ "trigger_event": {
+ "scope": "tpl",
+ "description": "trigger_event",
+ "prefix": "act_trigger_event",
+ "body": "action={trigger_event$0}"
+ },
+ "publish": {
+ "scope": "tpl",
+ "description": "publish",
+ "prefix": "act_publish",
+ "body": "action={publish$0}"
+ },
+ "disable": {
+ "scope": "tpl",
+ "description": "disable",
+ "prefix": "act_disable",
+ "body": "action={disable$0}"
+ },
+ "enable": {
+ "scope": "tpl",
+ "description": "enable",
+ "prefix": "act_enable",
+ "body": "action={enable$0}"
+ },
+ "event": {
+ "scope": "tpl",
+ "description": "event",
+ "prefix": "act_event",
+ "body": "action={event$0}"
+ },
+ "focus": {
+ "scope": "tpl",
+ "description": "focus",
+ "prefix": "act_focus",
+ "body": "action={focus$0}"
+ },
+ "form_reset": {
+ "scope": "tpl",
+ "description": "form_reset",
+ "prefix": "act_form_reset",
+ "body": "action={form_reset$0}"
+ },
+ "reset": {
+ "scope": "tpl",
+ "description": "reset",
+ "prefix": "act_reset",
+ "body": "action={reset$0}"
+ },
+ "set_value": {
+ "scope": "tpl",
+ "description": "set_value",
+ "prefix": "act_set_value",
+ "body": "action={set_value$0}"
+ },
+ "submit": {
+ "scope": "tpl",
+ "description": "submit",
+ "prefix": "act_submit",
+ "body": "action={submit$0}"
+ },
+ "typeselect": {
+ "scope": "tpl",
+ "description": "typeselect",
+ "prefix": "act_typeselect",
+ "body": "action={typeselect$0}"
+ },
+ "validation_error": {
+ "scope": "tpl",
+ "description": "validation_error",
+ "prefix": "act_validation_error",
+ "body": "action={validation_error$0}"
+ },
+ "script": {
+ "scope": "tpl",
+ "description": "script",
+ "prefix": "act_script",
+ "body": "action={script$0}"
+ },
+ "dialog_mail_page": {
+ "scope": "tpl",
+ "description": "dialog_mail_page",
+ "prefix": "act_dialog_mail_page",
+ "body": "action={dialog_mail_page$0}"
+ },
+ "dialog_mailing_page": {
+ "scope": "tpl",
+ "description": "dialog_mailing_page",
+ "prefix": "act_dialog_mailing_page",
+ "body": "action={dialog_mailing_page$0}"
+ },
+ "mailing_page_test": {
+ "scope": "tpl",
+ "description": "mailing_page_test",
+ "prefix": "act_mailing_page_test",
+ "body": "action={mailing_page_test$0}"
+ },
+ "mailinglist_confirm": {
+ "scope": "tpl",
+ "description": "mailinglist_confirm",
+ "prefix": "act_mailinglist_confirm",
+ "body": "action={mailinglist_confirm$0}"
+ },
+ "mailinglist_unsubscribe": {
+ "scope": "tpl",
+ "description": "mailinglist_unsubscribe",
+ "prefix": "act_mailinglist_unsubscribe",
+ "body": "action={mailinglist_unsubscribe$0}"
+ },
+ "alert": {
+ "scope": "tpl",
+ "description": "alert",
+ "prefix": "act_alert",
+ "body": "action={alert$0}"
+ },
+ "confirm": {
+ "scope": "tpl",
+ "description": "confirm",
+ "prefix": "act_confirm",
+ "body": "action={confirm$0}"
+ },
+ "growl": {
+ "scope": "tpl",
+ "description": "growl",
+ "prefix": "act_growl",
+ "body": "action={growl$0}"
+ },
+ "redirect": {
+ "scope": "tpl",
+ "description": "redirect",
+ "prefix": "act_redirect",
+ "body": "action={redirect$0}"
+ },
+ "reload": {
+ "scope": "tpl",
+ "description": "reload",
+ "prefix": "act_reload",
+ "body": "action={reload$0}"
+ },
+ "dialog_predicate_new": {
+ "scope": "tpl",
+ "description": "dialog_predicate_new",
+ "prefix": "act_dialog_predicate_new",
+ "body": "action={dialog_predicate_new$0}"
+ },
+ "link": {
+ "scope": "tpl",
+ "description": "link",
+ "prefix": "act_link",
+ "body": "action={link$0}"
+ },
+ "unlink": {
+ "scope": "tpl",
+ "description": "unlink",
+ "prefix": "act_unlink",
+ "body": "action={unlink$0}"
+ },
+ "delete_media": {
+ "scope": "tpl",
+ "description": "delete_media",
+ "prefix": "act_delete_media",
+ "body": "action={delete_media$0}"
+ },
+ "delete_rsc": {
+ "scope": "tpl",
+ "description": "delete_rsc",
+ "prefix": "act_delete_rsc",
+ "body": "action={delete_rsc$0}"
+ },
+ "dialog_delete_rsc": {
+ "scope": "tpl",
+ "description": "dialog_delete_rsc",
+ "prefix": "act_dialog_delete_rsc",
+ "body": "action={dialog_delete_rsc$0}"
+ },
+ "dialog_duplicate_rsc": {
+ "scope": "tpl",
+ "description": "dialog_duplicate_rsc",
+ "prefix": "act_dialog_duplicate_rsc",
+ "body": "action={dialog_duplicate_rsc$0}"
+ },
+ "dialog_edit_basics": {
+ "scope": "tpl",
+ "description": "dialog_edit_basics",
+ "prefix": "act_dialog_edit_basics",
+ "body": "action={dialog_edit_basics$0}"
+ },
+ "dialog_media_upload": {
+ "scope": "tpl",
+ "description": "dialog_media_upload",
+ "prefix": "act_dialog_media_upload",
+ "body": "action={dialog_media_upload$0}"
+ },
+ "dialog_new_rsc": {
+ "scope": "tpl",
+ "description": "dialog_new_rsc",
+ "prefix": "act_dialog_new_rsc",
+ "body": "action={dialog_new_rsc$0}"
+ },
+ "moreresults": {
+ "scope": "tpl",
+ "description": "moreresults",
+ "prefix": "act_moreresults",
+ "body": "action={moreresults$0}"
+ },
+ "template": {
+ "scope": "tpl",
+ "description": "template",
+ "prefix": "act_template",
+ "body": "action={template$0}"
+ },
+ "auth_disconnect": {
+ "scope": "tpl",
+ "description": "auth_disconnect",
+ "prefix": "act_auth_disconnect",
+ "body": "action={auth_disconnect$0}"
+ },
+ "delete_username": {
+ "scope": "tpl",
+ "description": "delete_username",
+ "prefix": "act_delete_username",
+ "body": "action={delete_username$0}"
+ },
+ "dialog_delete_username": {
+ "scope": "tpl",
+ "description": "dialog_delete_username",
+ "prefix": "act_dialog_delete_username",
+ "body": "action={dialog_delete_username$0}"
+ },
+ "dialog_set_username_password": {
+ "scope": "tpl",
+ "description": "dialog_set_username_password",
+ "prefix": "act_dialog_set_username_password",
+ "body": "action={dialog_set_username_password$0}"
+ },
+ "dialog_user_add": {
+ "scope": "tpl",
+ "description": "dialog_user_add",
+ "prefix": "act_dialog_user_add",
+ "body": "action={dialog_user_add$0}"
+ },
+ "logoff": {
+ "scope": "tpl",
+ "description": "logoff",
+ "prefix": "act_logoff",
+ "body": "action={logoff$0}"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-filters.code-snippets b/snippets/tpl-filters.code-snippets
new file mode 100644
index 0000000..e53c9b8
--- /dev/null
+++ b/snippets/tpl-filters.code-snippets
@@ -0,0 +1,752 @@
+{
+ "add_day": {
+ "scope": "tpl",
+ "description": "|add_day",
+ "prefix": "|add_day",
+ "body": "|add_day"
+ },
+ "make_list": {
+ "scope": "tpl",
+ "description": "|make_list",
+ "prefix": "|make_list",
+ "body": "|make_list"
+ },
+ "add_hour": {
+ "scope": "tpl",
+ "description": "|add_hour",
+ "prefix": "|add_hour",
+ "body": "|add_hour"
+ },
+ "make_value": {
+ "scope": "tpl",
+ "description": "|make_value",
+ "prefix": "|make_value",
+ "body": "|make_value"
+ },
+ "add_month": {
+ "scope": "tpl",
+ "description": "|add_month",
+ "prefix": "|add_month",
+ "body": "|add_month"
+ },
+ "match": {
+ "scope": "tpl",
+ "description": "|match",
+ "prefix": "|match",
+ "body": "|match"
+ },
+ "add_week": {
+ "scope": "tpl",
+ "description": "|add_week",
+ "prefix": "|add_week",
+ "body": "|add_week"
+ },
+ "max": {
+ "scope": "tpl",
+ "description": "|max",
+ "prefix": "|max",
+ "body": "|max"
+ },
+ "add_year": {
+ "scope": "tpl",
+ "description": "|add_year",
+ "prefix": "|add_year",
+ "body": "|add_year"
+ },
+ "md5": {
+ "scope": "tpl",
+ "description": "|md5",
+ "prefix": "|md5",
+ "body": "|md5"
+ },
+ "after": {
+ "scope": "tpl",
+ "description": "|after",
+ "prefix": "|after",
+ "body": "|after"
+ },
+ "member": {
+ "scope": "tpl",
+ "description": "|member",
+ "prefix": "|member",
+ "body": "|member"
+ },
+ "append": {
+ "scope": "tpl",
+ "description": "|append",
+ "prefix": "|append",
+ "body": "|append"
+ },
+ "min": {
+ "scope": "tpl",
+ "description": "|min",
+ "prefix": "|min",
+ "body": "|min"
+ },
+ "as_atom": {
+ "scope": "tpl",
+ "description": "|as_atom",
+ "prefix": "|as_atom",
+ "body": "|as_atom"
+ },
+ "minmax": {
+ "scope": "tpl",
+ "description": "|minmax",
+ "prefix": "|minmax",
+ "body": "|minmax"
+ },
+ "before": {
+ "scope": "tpl",
+ "description": "|before",
+ "prefix": "|before",
+ "body": "|before"
+ },
+ "ne_day": {
+ "scope": "tpl",
+ "description": "|ne_day",
+ "prefix": "|ne_day",
+ "body": "|ne_day"
+ },
+ "brlinebreaks": {
+ "scope": "tpl",
+ "description": "|brlinebreaks",
+ "prefix": "|brlinebreaks",
+ "body": "|brlinebreaks"
+ },
+ "nthtail": {
+ "scope": "tpl",
+ "description": "|nthtail",
+ "prefix": "|nthtail",
+ "body": "|nthtail"
+ },
+ "capfirst": {
+ "scope": "tpl",
+ "description": "|capfirst",
+ "prefix": "|capfirst",
+ "body": "|capfirst"
+ },
+ "parse_url": {
+ "scope": "tpl",
+ "description": "|parse_url",
+ "prefix": "|parse_url",
+ "body": "|parse_url"
+ },
+ "center": {
+ "scope": "tpl",
+ "description": "|center",
+ "prefix": "|center",
+ "body": "|center"
+ },
+ "pickle": {
+ "scope": "tpl",
+ "description": "|pickle",
+ "prefix": "|pickle",
+ "body": "|pickle"
+ },
+ "chunk": {
+ "scope": "tpl",
+ "description": "|chunk",
+ "prefix": "|chunk",
+ "body": "|chunk"
+ },
+ "pprint": {
+ "scope": "tpl",
+ "description": "|pprint",
+ "prefix": "|pprint",
+ "body": "|pprint"
+ },
+ "content_type_label": {
+ "scope": "tpl",
+ "description": "|content_type_label",
+ "prefix": "|content_type_label",
+ "body": "|content_type_label"
+ },
+ "rand": {
+ "scope": "tpl",
+ "description": "|rand",
+ "prefix": "|rand",
+ "body": "|rand"
+ },
+ "content_type_urls": {
+ "scope": "tpl",
+ "description": "|content_type_urls",
+ "prefix": "|content_type_urls",
+ "body": "|content_type_urls"
+ },
+ "random": {
+ "scope": "tpl",
+ "description": "|random",
+ "prefix": "|random",
+ "body": "|random"
+ },
+ "datediff": {
+ "scope": "tpl",
+ "description": "|datediff",
+ "prefix": "|datediff",
+ "body": "|datediff"
+ },
+ "randomize": {
+ "scope": "tpl",
+ "description": "|randomize",
+ "prefix": "|randomize",
+ "body": "|randomize"
+ },
+ "date": {
+ "scope": "tpl",
+ "description": "|date",
+ "prefix": "|date",
+ "body": "|date"
+ },
+ "range": {
+ "scope": "tpl",
+ "description": "|range",
+ "prefix": "|range",
+ "body": "|range"
+ },
+ "date_range": {
+ "scope": "tpl",
+ "description": "|date_range",
+ "prefix": "|date_range",
+ "body": "|date_range"
+ },
+ "replace_args": {
+ "scope": "tpl",
+ "description": "|replace_args",
+ "prefix": "|replace_args",
+ "body": "|replace_args"
+ },
+ "element": {
+ "scope": "tpl",
+ "description": "|element",
+ "prefix": "|element",
+ "body": "|element"
+ },
+ "replace": {
+ "scope": "tpl",
+ "description": "|replace",
+ "prefix": "|replace",
+ "body": "|replace"
+ },
+ "embedded_media": {
+ "scope": "tpl",
+ "description": "|embedded_media",
+ "prefix": "|embedded_media",
+ "body": "|embedded_media"
+ },
+ "reversed": {
+ "scope": "tpl",
+ "description": "|reversed",
+ "prefix": "|reversed",
+ "body": "|reversed"
+ },
+ "eq_day": {
+ "scope": "tpl",
+ "description": "|eq_day",
+ "prefix": "|eq_day",
+ "body": "|eq_day"
+ },
+ "rjust": {
+ "scope": "tpl",
+ "description": "|rjust",
+ "prefix": "|rjust",
+ "body": "|rjust"
+ },
+ "escape_check": {
+ "scope": "tpl",
+ "description": "|escape_check",
+ "prefix": "|escape_check",
+ "body": "|escape_check"
+ },
+ "round": {
+ "scope": "tpl",
+ "description": "|round",
+ "prefix": "|round",
+ "body": "|round"
+ },
+ "escape": {
+ "scope": "tpl",
+ "description": "|escape",
+ "prefix": "|escape",
+ "body": "|escape"
+ },
+ "sanitize_html": {
+ "scope": "tpl",
+ "description": "|sanitize_html",
+ "prefix": "|sanitize_html",
+ "body": "|sanitize_html"
+ },
+ "escape_ical": {
+ "scope": "tpl",
+ "description": "|escape_ical",
+ "prefix": "|escape_ical",
+ "body": "|escape_ical"
+ },
+ "sanitize_url": {
+ "scope": "tpl",
+ "description": "|sanitize_url",
+ "prefix": "|sanitize_url",
+ "body": "|sanitize_url"
+ },
+ "escapejs": {
+ "scope": "tpl",
+ "description": "|escapejs",
+ "prefix": "|escapejs",
+ "body": "|escapejs"
+ },
+ "sha1": {
+ "scope": "tpl",
+ "description": "|sha1",
+ "prefix": "|sha1",
+ "body": "|sha1"
+ },
+ "escapejson": {
+ "scope": "tpl",
+ "description": "|escapejson",
+ "prefix": "|escapejson",
+ "body": "|escapejson"
+ },
+ "show_media": {
+ "scope": "tpl",
+ "description": "|show_media",
+ "prefix": "|show_media",
+ "body": "|show_media"
+ },
+ "escape_link": {
+ "scope": "tpl",
+ "description": "|escape_link",
+ "prefix": "|escape_link",
+ "body": "|escape_link"
+ },
+ "slice": {
+ "scope": "tpl",
+ "description": "|slice",
+ "prefix": "|slice",
+ "body": "|slice"
+ },
+ "escapexml": {
+ "scope": "tpl",
+ "description": "|escapexml",
+ "prefix": "|escapexml",
+ "body": "|escapexml"
+ },
+ "slugify": {
+ "scope": "tpl",
+ "description": "|slugify",
+ "prefix": "|slugify",
+ "body": "|slugify"
+ },
+ "exclude": {
+ "scope": "tpl",
+ "description": "|exclude",
+ "prefix": "|exclude",
+ "body": "|exclude"
+ },
+ "sort": {
+ "scope": "tpl",
+ "description": "|sort",
+ "prefix": "|sort",
+ "body": "|sort"
+ },
+ "filesizeformat": {
+ "scope": "tpl",
+ "description": "|filesizeformat",
+ "prefix": "|filesizeformat",
+ "body": "|filesizeformat"
+ },
+ "split": {
+ "scope": "tpl",
+ "description": "|split",
+ "prefix": "|split",
+ "body": "|split"
+ },
+ "filter": {
+ "scope": "tpl",
+ "description": "|filter",
+ "prefix": "|filter",
+ "body": "|filter"
+ },
+ "split_in": {
+ "scope": "tpl",
+ "description": "|split_in",
+ "prefix": "|split_in",
+ "body": "|split_in"
+ },
+ "first": {
+ "scope": "tpl",
+ "description": "|first",
+ "prefix": "|first",
+ "body": "|first"
+ },
+ "stringify": {
+ "scope": "tpl",
+ "description": "|stringify",
+ "prefix": "|stringify",
+ "body": "|stringify"
+ },
+ "fix_ampersands": {
+ "scope": "tpl",
+ "description": "|fix_ampersands",
+ "prefix": "|fix_ampersands",
+ "body": "|fix_ampersands"
+ },
+ "striptags": {
+ "scope": "tpl",
+ "description": "|striptags",
+ "prefix": "|striptags",
+ "body": "|striptags"
+ },
+ "flatten_value": {
+ "scope": "tpl",
+ "description": "|flatten_value",
+ "prefix": "|flatten_value",
+ "body": "|flatten_value"
+ },
+ "sub_day": {
+ "scope": "tpl",
+ "description": "|sub_day",
+ "prefix": "|sub_day",
+ "body": "|sub_day"
+ },
+ "force_escape": {
+ "scope": "tpl",
+ "description": "|force_escape",
+ "prefix": "|force_escape",
+ "body": "|force_escape"
+ },
+ "sub_hour": {
+ "scope": "tpl",
+ "description": "|sub_hour",
+ "prefix": "|sub_hour",
+ "body": "|sub_hour"
+ },
+ "format_duration": {
+ "scope": "tpl",
+ "description": "|format_duration",
+ "prefix": "|format_duration",
+ "body": "|format_duration"
+ },
+ "sub_month": {
+ "scope": "tpl",
+ "description": "|sub_month",
+ "prefix": "|sub_month",
+ "body": "|sub_month"
+ },
+ "format_integer": {
+ "scope": "tpl",
+ "description": "|format_integer",
+ "prefix": "|format_integer",
+ "body": "|format_integer"
+ },
+ "sub_week": {
+ "scope": "tpl",
+ "description": "|sub_week",
+ "prefix": "|sub_week",
+ "body": "|sub_week"
+ },
+ "format_number": {
+ "scope": "tpl",
+ "description": "|format_number",
+ "prefix": "|format_number",
+ "body": "|format_number"
+ },
+ "sub_year": {
+ "scope": "tpl",
+ "description": "|sub_year",
+ "prefix": "|sub_year",
+ "body": "|sub_year"
+ },
+ "format_price": {
+ "scope": "tpl",
+ "description": "|format_price",
+ "prefix": "|format_price",
+ "body": "|format_price"
+ },
+ "summary": {
+ "scope": "tpl",
+ "description": "|summary",
+ "prefix": "|summary",
+ "body": "|summary"
+ },
+ "group_by": {
+ "scope": "tpl",
+ "description": "|group_by",
+ "prefix": "|group_by",
+ "body": "|group_by"
+ },
+ "tail": {
+ "scope": "tpl",
+ "description": "|tail",
+ "prefix": "|tail",
+ "body": "|tail"
+ },
+ "group_firstchar": {
+ "scope": "tpl",
+ "description": "|group_firstchar",
+ "prefix": "|group_firstchar",
+ "body": "|group_firstchar"
+ },
+ "timesince": {
+ "scope": "tpl",
+ "description": "|timesince",
+ "prefix": "|timesince",
+ "body": "|timesince"
+ },
+ "group_title_firstchar": {
+ "scope": "tpl",
+ "description": "|group_title_firstchar",
+ "prefix": "|group_title_firstchar",
+ "body": "|group_title_firstchar"
+ },
+ "to_binary": {
+ "scope": "tpl",
+ "description": "|to_binary",
+ "prefix": "|to_binary",
+ "body": "|to_binary"
+ },
+ "if": {
+ "scope": "tpl",
+ "description": "|if",
+ "prefix": "|if",
+ "body": "|if"
+ },
+ "toc": {
+ "scope": "tpl",
+ "description": "|toc",
+ "prefix": "|toc",
+ "body": "|toc"
+ },
+ "if_undefined": {
+ "scope": "tpl",
+ "description": "|if_undefined",
+ "prefix": "|if_undefined",
+ "body": "|if_undefined"
+ },
+ "to_integer": {
+ "scope": "tpl",
+ "description": "|to_integer",
+ "prefix": "|to_integer",
+ "body": "|to_integer"
+ },
+ "index_of": {
+ "scope": "tpl",
+ "description": "|index_of",
+ "prefix": "|index_of",
+ "body": "|index_of"
+ },
+ "to_json": {
+ "scope": "tpl",
+ "description": "|to_json",
+ "prefix": "|to_json",
+ "body": "|to_json"
+ },
+ "in_future": {
+ "scope": "tpl",
+ "description": "|in_future",
+ "prefix": "|in_future",
+ "body": "|in_future"
+ },
+ "tokens": {
+ "scope": "tpl",
+ "description": "|tokens",
+ "prefix": "|tokens",
+ "body": "|tokens"
+ },
+ "in_past": {
+ "scope": "tpl",
+ "description": "|in_past",
+ "prefix": "|in_past",
+ "body": "|in_past"
+ },
+ "to_name": {
+ "scope": "tpl",
+ "description": "|to_name",
+ "prefix": "|to_name",
+ "body": "|to_name"
+ },
+ "insert": {
+ "scope": "tpl",
+ "description": "|insert",
+ "prefix": "|insert",
+ "body": "|insert"
+ },
+ "trans_filled": {
+ "scope": "tpl",
+ "description": "|trans_filled",
+ "prefix": "|trans_filled",
+ "body": "|trans_filled"
+ },
+ "is_a": {
+ "scope": "tpl",
+ "description": "|is_a",
+ "prefix": "|is_a",
+ "body": "|is_a"
+ },
+ "trim": {
+ "scope": "tpl",
+ "description": "|trim",
+ "prefix": "|trim",
+ "body": "|trim"
+ },
+ "is_defined": {
+ "scope": "tpl",
+ "description": "|is_defined",
+ "prefix": "|is_defined",
+ "body": "|is_defined"
+ },
+ "truncate": {
+ "scope": "tpl",
+ "description": "|truncate",
+ "prefix": "|truncate",
+ "body": "|truncate"
+ },
+ "is_even": {
+ "scope": "tpl",
+ "description": "|is_even",
+ "prefix": "|is_even",
+ "body": "|is_even"
+ },
+ "truncate_html": {
+ "scope": "tpl",
+ "description": "|truncate_html",
+ "prefix": "|truncate_html",
+ "body": "|truncate_html"
+ },
+ "is_list": {
+ "scope": "tpl",
+ "description": "|is_list",
+ "prefix": "|is_list",
+ "body": "|is_list"
+ },
+ "unescape": {
+ "scope": "tpl",
+ "description": "|unescape",
+ "prefix": "|unescape",
+ "body": "|unescape"
+ },
+ "is_not_a": {
+ "scope": "tpl",
+ "description": "|is_not_a",
+ "prefix": "|is_not_a",
+ "body": "|is_not_a"
+ },
+ "upper": {
+ "scope": "tpl",
+ "description": "|upper",
+ "prefix": "|upper",
+ "body": "|upper"
+ },
+ "is_number": {
+ "scope": "tpl",
+ "description": "|is_number",
+ "prefix": "|is_number",
+ "body": "|is_number"
+ },
+ "url_abs": {
+ "scope": "tpl",
+ "description": "|url_abs",
+ "prefix": "|url_abs",
+ "body": "|url_abs"
+ },
+ "is_site_url": {
+ "scope": "tpl",
+ "description": "|is_site_url",
+ "prefix": "|is_site_url",
+ "body": "|is_site_url"
+ },
+ "urlencode": {
+ "scope": "tpl",
+ "description": "|urlencode",
+ "prefix": "|urlencode",
+ "body": "|urlencode"
+ },
+ "is_undefined": {
+ "scope": "tpl",
+ "description": "|is_undefined",
+ "prefix": "|is_undefined",
+ "body": "|is_undefined"
+ },
+ "url": {
+ "scope": "tpl",
+ "description": "|url",
+ "prefix": "|url",
+ "body": "|url"
+ },
+ "is_visible": {
+ "scope": "tpl",
+ "description": "|is_visible",
+ "prefix": "|is_visible",
+ "body": "|is_visible"
+ },
+ "urlize": {
+ "scope": "tpl",
+ "description": "|urlize",
+ "prefix": "|urlize",
+ "body": "|urlize"
+ },
+ "join": {
+ "scope": "tpl",
+ "description": "|join",
+ "prefix": "|join",
+ "body": "|join"
+ },
+ "utc": {
+ "scope": "tpl",
+ "description": "|utc",
+ "prefix": "|utc",
+ "body": "|utc"
+ },
+ "last": {
+ "scope": "tpl",
+ "description": "|last",
+ "prefix": "|last",
+ "body": "|last"
+ },
+ "vsplit_in": {
+ "scope": "tpl",
+ "description": "|vsplit_in",
+ "prefix": "|vsplit_in",
+ "body": "|vsplit_in"
+ },
+ "length": {
+ "scope": "tpl",
+ "description": "|length",
+ "prefix": "|length",
+ "body": "|length"
+ },
+ "without_embedded_media": {
+ "scope": "tpl",
+ "description": "|without_embedded_media",
+ "prefix": "|without_embedded_media",
+ "body": "|without_embedded_media"
+ },
+ "linebreaksbr": {
+ "scope": "tpl",
+ "description": "|linebreaksbr",
+ "prefix": "|linebreaksbr",
+ "body": "|linebreaksbr"
+ },
+ "without": {
+ "scope": "tpl",
+ "description": "|without",
+ "prefix": "|without",
+ "body": "|without"
+ },
+ "ljust": {
+ "scope": "tpl",
+ "description": "|ljust",
+ "prefix": "|ljust",
+ "body": "|ljust"
+ },
+ "yesno": {
+ "scope": "tpl",
+ "description": "|yesno",
+ "prefix": "|yesno",
+ "body": "|yesno"
+ },
+ "lower": {
+ "scope": "tpl",
+ "description": "|lower",
+ "prefix": "|lower",
+ "body": "|lower"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-global-vars.code-snippets b/snippets/tpl-global-vars.code-snippets
new file mode 100644
index 0000000..cb3eaee
--- /dev/null
+++ b/snippets/tpl-global-vars.code-snippets
@@ -0,0 +1,68 @@
+{
+ "zotonic_version": {
+ "scope": "tpl",
+ "description": "zotonic_version",
+ "prefix": "zotonic_version",
+ "body": "zotonic_version"
+ },
+ "zotonic_dispatch": {
+ "scope": "tpl",
+ "description": "zotonic_dispatch",
+ "prefix": "zotonic_dispatch",
+ "body": "zotonic_dispatch"
+ },
+ "zotonic_dispatch_path": {
+ "scope": "tpl",
+ "description": "zotonic_dispatch_path",
+ "prefix": "zotonic_dispatch_path",
+ "body": "zotonic_dispatch_path"
+ },
+ "zotonic_dispatch_path_rewrite": {
+ "scope": "tpl",
+ "description": "zotonic_dispatch_path_rewrite",
+ "prefix": "zotonic_dispatch_path_rewrite",
+ "body": "zotonic_dispatch_path_rewrite"
+ },
+ "z_language": {
+ "scope": "tpl",
+ "description": "z_language",
+ "prefix": "z_language",
+ "body": "z_language"
+ },
+ "q": {
+ "scope": "tpl",
+ "description": "q",
+ "prefix": "q",
+ "body": "q"
+ },
+ "now": {
+ "scope": "tpl",
+ "description": "now",
+ "prefix": "now",
+ "body": "now"
+ },
+ "m": {
+ "scope": "tpl",
+ "description": "m",
+ "prefix": "m.",
+ "body": "m.${1|acl,acl_rule,acl_user_group,admin,admin_blocks,admin_config,admin_identity,admin_menu,admin_status,auth2fa,authentication,backup,backup_revision,category,client_local_storage,client_session_storage,comment,config,content_group,custom_redirect,development,edge,editor_tinymce,email_dkim,email_receive_recipient,email_status,facebook,filestore,fileuploader,hierarchy,identity,image_edit,import_csv_data,l10n,linkedin,log,log_email,log_ui,mailinglist,media,microsoft,modules,mqtt_ticket,oauth2,oauth2_consumer,oauth2_service,predicate,ratelimit,req,rsc,rsc_gone,search,seo,seo_sitemap,server_storage,signup,site,site_update,ssl_letsencrypt,survey,sysconfig,template,tkvstore,translation,twitter|}"
+ },
+ "true": {
+ "scope": "tpl",
+ "description": "true",
+ "prefix": "true",
+ "body": "true",
+ },
+ "false": {
+ "scope": "tpl",
+ "description": "false",
+ "prefix": "false",
+ "body": "false",
+ },
+ "undefined": {
+ "scope": "tpl",
+ "description": "undefined",
+ "prefix": "undefined",
+ "body": "undefined",
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-models.code-snippets b/snippets/tpl-models.code-snippets
new file mode 100644
index 0000000..912b28f
--- /dev/null
+++ b/snippets/tpl-models.code-snippets
@@ -0,0 +1,434 @@
+{
+ "m_acl": {
+ "scope": "tpl",
+ "description": "m_acl",
+ "prefix": "m_acl",
+ "body": "m.acl.${1|user,is_admin,is_allowed,authenticated|}"
+ },
+ "m_acl_is_allowed": {
+ "scope": "tpl",
+ "description": "m_acl",
+ "prefix": "m_acl",
+ "body": "m.acl.is_allowed.${1|use,admin,view,delete,update,insert,link|}."
+ },
+ "m_acl_authenticated": {
+ "scope": "tpl",
+ "description": "m_acl",
+ "prefix": "m_acl",
+ "body": "m.acl.authenticated.${1|use,admin,view,delete,update,insert,link|}."
+ },
+ "m_acl_rule": {
+ "scope": "tpl",
+ "description": "m_acl_rule",
+ "prefix": "m_acl_rule",
+ "body": "m.acl_rule"
+ },
+ "m_acl_user_group": {
+ "scope": "tpl",
+ "description": "m_acl_user_group",
+ "prefix": "m_acl_user_group",
+ "body": "m.acl_user_group"
+ },
+ "m_admin": {
+ "scope": "tpl",
+ "description": "m_admin",
+ "prefix": "m_admin",
+ "body": "m.admin"
+ },
+ "m_admin_blocks": {
+ "scope": "tpl",
+ "description": "m_admin_blocks",
+ "prefix": "m_admin_blocks",
+ "body": "m.admin_blocks"
+ },
+ "m_admin_config": {
+ "scope": "tpl",
+ "description": "m_admin_config",
+ "prefix": "m_admin_config",
+ "body": "m.admin_config"
+ },
+ "m_admin_identity": {
+ "scope": "tpl",
+ "description": "m_admin_identity",
+ "prefix": "m_admin_identity",
+ "body": "m.admin_identity"
+ },
+ "m_admin_menu": {
+ "scope": "tpl",
+ "description": "m_admin_menu",
+ "prefix": "m_admin_menu",
+ "body": "m.admin_menu"
+ },
+ "m_admin_status": {
+ "scope": "tpl",
+ "description": "m_admin_status",
+ "prefix": "m_admin_status",
+ "body": "m.admin_status"
+ },
+ "m_auth2fa": {
+ "scope": "tpl",
+ "description": "m_auth2fa",
+ "prefix": "m_auth2fa",
+ "body": "m.auth2fa"
+ },
+ "m_authentication": {
+ "scope": "tpl",
+ "description": "m_authentication",
+ "prefix": "m_authentication",
+ "body": "m.authentication"
+ },
+ "m_backup": {
+ "scope": "tpl",
+ "description": "m_backup",
+ "prefix": "m_backup",
+ "body": "m.backup"
+ },
+ "m_backup_revision": {
+ "scope": "tpl",
+ "description": "m_backup_revision",
+ "prefix": "m_backup_revision",
+ "body": "m.backup_revision"
+ },
+ "m_category_complete": {
+ "scope": "tpl",
+ "description": "m_category",
+ "prefix": "m_category",
+ "body": "m.category.${1|tree,tree2,tree_flat,tree_flat_meta|}"
+ },
+ "m_category_single": {
+ "scope": "tpl",
+ "description": "m_category",
+ "prefix": "m_category",
+ "body": "m.category.$1.${2|tree,tree1,tree2,tree_flat,path,is_a,image,parent_id,nr,level,left,right,name,path|}"
+ },
+ "m_category_single_id": {
+ "scope": "tpl",
+ "description": "m_category",
+ "prefix": "m_category",
+ "body": "m.category.[$1].${2|tree,tree1,tree2,tree_flat,path,is_a,image,parent_id,nr,level,left,right,name,path|}"
+ },
+ "m_client_local_storage": {
+ "scope": "tpl",
+ "description": "m_client_local_storage",
+ "prefix": "m_client_local_storage",
+ "body": "m.client_local_storage"
+ },
+ "m_client_session_storage": {
+ "scope": "tpl",
+ "description": "m_client_session_storage",
+ "prefix": "m_client_session_storage",
+ "body": "m.client_session_storage"
+ },
+ "m_comment": {
+ "scope": "tpl",
+ "description": "m_comment",
+ "prefix": "m_comment",
+ "body": "m.comment"
+ },
+ "m_config": {
+ "scope": "tpl",
+ "description": "m_config",
+ "prefix": "m_config",
+ "body": "m.config"
+ },
+ "m_content_group": {
+ "scope": "tpl",
+ "description": "m_content_group",
+ "prefix": "m_content_group",
+ "body": "m.content_group"
+ },
+ "m_custom_redirect": {
+ "scope": "tpl",
+ "description": "m_custom_redirect",
+ "prefix": "m_custom_redirect",
+ "body": "m.custom_redirect"
+ },
+ "m_development": {
+ "scope": "tpl",
+ "description": "m_development",
+ "prefix": "m_development",
+ "body": "m.development"
+ },
+ "m_edge": {
+ "scope": "tpl",
+ "description": "m_edge",
+ "prefix": "m_edge",
+ "body": "m.edge"
+ },
+ "m_editor_tinymce": {
+ "scope": "tpl",
+ "description": "m_editor_tinymce",
+ "prefix": "m_editor_tinymce",
+ "body": "m.editor_tinymce"
+ },
+ "m_email_dkim": {
+ "scope": "tpl",
+ "description": "m_email_dkim",
+ "prefix": "m_email_dkim",
+ "body": "m.email_dkim"
+ },
+ "m_email_receive_recipient": {
+ "scope": "tpl",
+ "description": "m_email_receive_recipient",
+ "prefix": "m_email_receive_recipient",
+ "body": "m.email_receive_recipient"
+ },
+ "m_email_status": {
+ "scope": "tpl",
+ "description": "m_email_status",
+ "prefix": "m_email_status",
+ "body": "m.email_status"
+ },
+ "m_facebook": {
+ "scope": "tpl",
+ "description": "m_facebook",
+ "prefix": "m_facebook",
+ "body": "m.facebook"
+ },
+ "m_filestore": {
+ "scope": "tpl",
+ "description": "m_filestore",
+ "prefix": "m_filestore",
+ "body": "m.filestore"
+ },
+ "m_fileuploader": {
+ "scope": "tpl",
+ "description": "m_fileuploader",
+ "prefix": "m_fileuploader",
+ "body": "m.fileuploader"
+ },
+ "m_hierarchy": {
+ "scope": "tpl",
+ "description": "m_hierarchy",
+ "prefix": "m_hierarchy",
+ "body": "m.hierarchy"
+ },
+ "m_identity": {
+ "scope": "tpl",
+ "description": "m_identity",
+ "prefix": "m_identity",
+ "body": "m.identity[$1].${2|is_user,username|}"
+ },
+ "m_image_edit": {
+ "scope": "tpl",
+ "description": "m_image_edit",
+ "prefix": "m_image_edit",
+ "body": "m.image_edit"
+ },
+ "m_import_csv_data": {
+ "scope": "tpl",
+ "description": "m_import_csv_data",
+ "prefix": "m_import_csv_data",
+ "body": "m.import_csv_data"
+ },
+ "m_l10n": {
+ "scope": "tpl",
+ "description": "m_l10n",
+ "prefix": "m_l10n",
+ "body": "m.l10n"
+ },
+ "m_linkedin": {
+ "scope": "tpl",
+ "description": "m_linkedin",
+ "prefix": "m_linkedin",
+ "body": "m.linkedin"
+ },
+ "m_log": {
+ "scope": "tpl",
+ "description": "m_log",
+ "prefix": "m_log",
+ "body": "m.log"
+ },
+ "m_log_email": {
+ "scope": "tpl",
+ "description": "m_log_email",
+ "prefix": "m_log_email",
+ "body": "m.log_email"
+ },
+ "m_log_ui": {
+ "scope": "tpl",
+ "description": "m_log_ui",
+ "prefix": "m_log_ui",
+ "body": "m.log_ui"
+ },
+ "m_mailinglist": {
+ "scope": "tpl",
+ "description": "m_mailinglist",
+ "prefix": "m_mailinglist",
+ "body": "m.mailinglist"
+ },
+ "m_media": {
+ "scope": "tpl",
+ "description": "m_media",
+ "prefix": "m_media",
+ "body": "m.media[$1].${2|filename,rootname,original_filename,mime,width,height,orientation,sha1,size,preview_filename,preview_width,preview_height,is_deletable_file,is_deletable_preview,created|}"
+ },
+ "m_microsoft": {
+ "scope": "tpl",
+ "description": "m_microsoft",
+ "prefix": "m_microsoft",
+ "body": "m.microsoft"
+ },
+ "m_modules": {
+ "scope": "tpl",
+ "description": "m_modules",
+ "prefix": "m_modules",
+ "body": "m.modules.${1|active,all|}"
+ },
+ "m_modules_active": {
+ "scope": "tpl",
+ "description": "m_modules",
+ "prefix": "m_modules_active",
+ "body": "m.modules.active.mod_"
+ },
+ "m_mqtt_ticket": {
+ "scope": "tpl",
+ "description": "m_mqtt_ticket",
+ "prefix": "m_mqtt_ticket",
+ "body": "m.mqtt_ticket"
+ },
+ "m_oauth2": {
+ "scope": "tpl",
+ "description": "m_oauth2",
+ "prefix": "m_oauth2",
+ "body": "m.oauth2"
+ },
+ "m_oauth2_consumer": {
+ "scope": "tpl",
+ "description": "m_oauth2_consumer",
+ "prefix": "m_oauth2_consumer",
+ "body": "m.oauth2_consumer"
+ },
+ "m_oauth2_service": {
+ "scope": "tpl",
+ "description": "m_oauth2_service",
+ "prefix": "m_oauth2_service",
+ "body": "m.oauth2_service"
+ },
+ "m_predicate": {
+ "scope": "tpl",
+ "description": "m_predicate",
+ "prefix": "m_predicate",
+ "body": "m.predicate.${1|all,object_category,subject_category|}"
+ },
+ "m_ratelimit": {
+ "scope": "tpl",
+ "description": "m_ratelimit",
+ "prefix": "m_ratelimit",
+ "body": "m.ratelimit"
+ },
+ "m_req": {
+ "scope": "tpl",
+ "description": "m_req",
+ "prefix": "m_req",
+ "body": "m.req.${1|method,version,peer,is_ssl,host,raw_path,path,qs,referrer,user_agent,is_crawler,req_id,headers,timezone,language|}"
+ },
+ "m_rsc": {
+ "scope": "tpl",
+ "description": "m_rsc",
+ "prefix": "m_rsc",
+ "body": "m.rsc[$1].${2|title,short_title,summary,body,date_start,date_end,name,page_path,is_page_path_multiple,page_url,page_url_abs,default_page_url,is_authoritative,uri,category_id,category,seo_noindex,slug,seo_desc,is_me,is_visible,is_editable,is_linkable,is_ingroup,exists,is_a,is_cat,is_featured,is_protected,is_dependent,is_published,publication_start,publication_end,is_published_date,visible_for,content_group_id,o,s,op,sp,predicates_edit,media,medium,depiction,image_url,image_url_abs,thumbnail_url,thumbnail_url_abs,email,website,is_website_redirect,phone,phone_alt,phone_emergency,address_street_1,address_street_2,address_city,address_postcode,address_state,address_country,mail_street_1,mail_street_2,mail_city,mail_postcode,mail_state,mail_country,name_first,name_middle,name_surname_prefix,name_surname|}"
+ },
+ "m_rsc_is_a": {
+ "scope": "tpl",
+ "description": "m_rsc_is_a",
+ "prefix": "m_rsc_is_a",
+ "body": "m.rsc[$1].is_a."
+ },
+ "m_rsc_is_cat": {
+ "scope": "tpl",
+ "description": "m_rsc_is_cat",
+ "prefix": "m_rsc_is_cat",
+ "body": "m.rsc[$1].is_cat."
+ },
+ "m_rsc_gone": {
+ "scope": "tpl",
+ "description": "m_rsc_gone",
+ "prefix": "m_rsc_gone",
+ "body": "m.rsc_gone[$1].${2|new_id,new_uri,name,uri,page_path,is_authoritative,creator_id,created,modifier_id,modified|}"
+ },
+ "m_search": {
+ "scope": "tpl",
+ "description": "m_search",
+ "prefix": "m_search",
+ "body": "m.search"
+ },
+ "m_seo": {
+ "scope": "tpl",
+ "description": "m_seo",
+ "prefix": "m_seo",
+ "body": "m.seo"
+ },
+ "m_seo_sitemap": {
+ "scope": "tpl",
+ "description": "m_seo_sitemap",
+ "prefix": "m_seo_sitemap",
+ "body": "m.seo_sitemap"
+ },
+ "m_server_storage": {
+ "scope": "tpl",
+ "description": "m_server_storage",
+ "prefix": "m_server_storage",
+ "body": "m.server_storage"
+ },
+ "m_signup": {
+ "scope": "tpl",
+ "description": "m_signup",
+ "prefix": "m_signup",
+ "body": "m.signup"
+ },
+ "m_site": {
+ "scope": "tpl",
+ "description": "m_site",
+ "prefix": "m_site",
+ "body": "m.site"
+ },
+ "m_site_update": {
+ "scope": "tpl",
+ "description": "m_site_update",
+ "prefix": "m_site_update",
+ "body": "m.site_update"
+ },
+ "m_ssl_letsencrypt": {
+ "scope": "tpl",
+ "description": "m_ssl_letsencrypt",
+ "prefix": "m_ssl_letsencrypt",
+ "body": "m.ssl_letsencrypt"
+ },
+ "m_survey": {
+ "scope": "tpl",
+ "description": "m_survey",
+ "prefix": "m_survey",
+ "body": "m.survey"
+ },
+ "m_sysconfig": {
+ "scope": "tpl",
+ "description": "m_sysconfig",
+ "prefix": "m_sysconfig",
+ "body": "m.sysconfig"
+ },
+ "m_template": {
+ "scope": "tpl",
+ "description": "m_template",
+ "prefix": "m_template",
+ "body": "m.template"
+ },
+ "m_tkvstore": {
+ "scope": "tpl",
+ "description": "m_tkvstore",
+ "prefix": "m_tkvstore",
+ "body": "m.tkvstore"
+ },
+ "m_translation": {
+ "scope": "tpl",
+ "description": "m_translation",
+ "prefix": "m_translation",
+ "body": "m.translation.${1|language,language_list,language_list_enabled|}"
+ },
+ "m_twitter": {
+ "scope": "tpl",
+ "description": "m_twitter",
+ "prefix": "m_twitter",
+ "body": "m.twitter"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-stuff.code-snippets b/snippets/tpl-stuff.code-snippets
new file mode 100644
index 0000000..f5aa276
--- /dev/null
+++ b/snippets/tpl-stuff.code-snippets
@@ -0,0 +1,62 @@
+{
+ "atom": {
+ "scope": "tpl",
+ "description": "`atom`",
+ "prefix": "atom",
+ "body": "`$0`",
+ },
+ "filter": {
+ "scope": "tpl",
+ "description": "|filter",
+ "prefix": "filter",
+ "body": "|${1|add_day,make_list,add_hour,make_value,add_month,match,add_week,max,add_year,md5,after,member,append,min,as_atom,minmax,before,ne_day,brlinebreaks,nthtail,capfirst,parse_url,center,pickle,chunk,pprint,content_type_label,rand,content_type_urls,random,datediff,randomize,date,range,date_range,replace_args,element,replace,embedded_media,reversed,eq_day,rjust,escape_check,round,escape,sanitize_html,escape_ical,sanitize_url,escapejs,sha1,escapejson,show_media,escape_link,slice,escapexml,slugify,exclude,sort,filesizeformat,split,filter,split_in,first,stringify,fix_ampersands,striptags,flatten_value,sub_day,force_escape,sub_hour,format_duration,sub_month,format_integer,sub_week,format_number,sub_year,format_price,summary,group_by,tail,group_firstchar,timesince,group_title_firstchar,to_binary,if,toc,if_undefined,to_integer,index_of,to_json,in_future,tokens,in_past,to_name,insert,trans_filled,is_a,trim,is_defined,truncate,is_even,truncate_html,is_list,unescape,is_not_a,upper,is_number,url_abs,is_site_url,urlencode,is_undefined,url,is_visible,urlize,join,utc,last,vsplit_in,length,without_embedded_media,linebreaksbr,without,ljust,yesno,lower|}"
+ },
+ "map": {
+ "scope": "tpl",
+ "description": "%{ foo: bar }",
+ "prefix": "map",
+ "body": "%{ $1: $0 }",
+ },
+ "tag": {
+ "scope": "tpl",
+ "description": "{% tag %}",
+ "prefix": "tag",
+ "body": "{% ${1|autoescape,endautoescape,block,endblock,button,cache,endcache,call,catinclude,chart_pie,chart_pie3d,comment,endcomment,cycle,debug,draggable,droppable,elif,elseif,extends,filter,endfilter,for,endfor,google_chart,if,endif,ifequal,endifequal,ifnotequal,endifnotequal,image,image_data_url,image_url,include,inherit,inplace_textbox,javascript,endjavascript,lazy,lib,live,load,loremipsum,mailinglist_subscribe,media,menu,now,overrules,pager,poll,print,raw,endraw,script,sortable,sorter,spaceless,endspaceless,spinner,tabs,trans,translate,url,validate,wire,wire_args,with,endwith,worker|} %}",
+ },
+ "tag_all": {
+ "scope": "tpl",
+ "description": "{% all tag %}",
+ "prefix": "tag",
+ "body": "{% all ${1|catinclude,include|} %}",
+ },
+ "translate": {
+ "scope": "tpl",
+ "description": "{_ translate _}",
+ "prefix": "translate",
+ "body": "{_ $0 _}"
+ },
+ "variable": {
+ "scope": "tpl",
+ "description": "{{ var }}",
+ "prefix": "variable",
+ "body": "{{ $0 }}",
+ },
+ "global_vars": {
+ "scope": "tpl",
+ "description": "global_vars",
+ "prefix": "global_vars",
+ "body": "${0|zotonic_version,zotonic_dispatch,zotonic_dispatch_path,zotonic_dispatch_path_rewrite,z_language,q,now,m,true,false,undefined|}",
+ },
+ "icon": {
+ "scope": "tpl",
+ "description": "icon",
+ "prefix": "icon",
+ "body": "$0"
+ },
+ "icon_zotonic": {
+ "scope": "tpl",
+ "description": "icon",
+ "prefix": "icon",
+ "body": "$0"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-tags-builtin.code-snippets b/snippets/tpl-tags-builtin.code-snippets
new file mode 100644
index 0000000..1cbf9fe
--- /dev/null
+++ b/snippets/tpl-tags-builtin.code-snippets
@@ -0,0 +1,306 @@
+{
+ "all catinclude": {
+ "scope": "tpl",
+ "description": "{% all catinclude %}",
+ "prefix": "all catinclude",
+ "body": "{% all catinclude \"$0.tpl\" %}"
+ },
+ "all include": {
+ "scope": "tpl",
+ "description": "{% all include %}",
+ "prefix": "all include",
+ "body": "{% all include \"$0.tpl\" %}"
+ },
+ "autoescape": {
+ "scope": "tpl",
+ "description": "{% autoescape %}",
+ "prefix": "autoescape",
+ "body": "{% autoescape ${1|on,off|} %}$0{% endautoescape %}"
+ },
+ "endautoescape": {
+ "scope": "tpl",
+ "description": "{% endautoescape %}",
+ "prefix": "endautoescape",
+ "body": "{% endautoescape %}"
+ },
+ "block": {
+ "scope": "tpl",
+ "description": "{% block %}",
+ "prefix": "block",
+ "body": "{% block $1 %}$0{% endblock %}"
+ },
+ "endblock": {
+ "scope": "tpl",
+ "description": "{% endblock %}",
+ "prefix": "endblock",
+ "body": "{% endblock %}"
+ },
+ "cache": {
+ "scope": "tpl",
+ "description": "{% cache %}",
+ "prefix": "cache",
+ "body": "{% cache $1 %}$0{% endcache %}"
+ },
+ "endcache": {
+ "scope": "tpl",
+ "description": "{% endcache %}",
+ "prefix": "endcache",
+ "body": "{% endcache %}"
+ },
+ "call": {
+ "scope": "tpl",
+ "description": "{% call %}",
+ "prefix": "call",
+ "body": "{% call $0 %}"
+ },
+ "catinclude": {
+ "scope": "tpl",
+ "description": "{% catinclude %}",
+ "prefix": "catinclude",
+ "body": "{% catinclude \"$0.tpl\" %}"
+ },
+ "comment": {
+ "scope": "tpl",
+ "description": "{# #}",
+ "prefix": "comment",
+ "body": "{# $0 #}",
+ },
+ "comment_block": {
+ "scope": "tpl",
+ "description": "{% comment %}",
+ "prefix": "comment",
+ "body": "{% comment %}$0{% endcomment %}"
+ },
+ "comment_selected": {
+ "scope": "tpl",
+ "description": "{# #}",
+ "prefix": "comment",
+ "body": "{# ${TM_SELECTED_TEXT}$0 #}",
+ },
+ "comment_selected_block": {
+ "scope": "tpl",
+ "description": "{% comment %}",
+ "prefix": "comment",
+ "body": [
+ "{% comment %}",
+ "\t${TM_SELECTED_TEXT}$0",
+ "{% endcomment %}",
+ ],
+ },
+ "cycle": {
+ "scope": "tpl",
+ "description": "{% cycle %}",
+ "prefix": "cycle",
+ "body": "{% cycle $0 %}"
+ },
+ "extends": {
+ "scope": "tpl",
+ "description": "{% extends %}",
+ "prefix": "extends",
+ "body": "{% extends \"$0.tpl\" %}"
+ },
+ "filter": {
+ "scope": "tpl",
+ "description": "{% filter %}",
+ "prefix": "filter",
+ "body": "{% filter %}$0{% endfilter %}"
+ },
+ "endfilter": {
+ "scope": "tpl",
+ "description": "{% endfilter %}",
+ "prefix": "endfilter",
+ "body": "{% endfilter %}"
+ },
+ "for": {
+ "scope": "tpl",
+ "description": "{% for %}",
+ "prefix": "for",
+ "body": "{% for $1 in $2 %}$0{% endfor %}"
+ },
+ "endfor": {
+ "scope": "tpl",
+ "description": "{% endfor %}",
+ "prefix": "endfor",
+ "body": "{% endfor %}"
+ },
+ "if": {
+ "scope": "tpl",
+ "description": "{% if %}",
+ "prefix": "if",
+ "body": "{% if %}$0{% endif %}"
+ },
+ "elif": {
+ "scope": "tpl",
+ "description": "{% elif %}",
+ "prefix": "elif",
+ "body": "{% elif %}"
+ },
+ "elseif": {
+ "scope": "tpl",
+ "description": "{% elseif %}",
+ "prefix": "elseif",
+ "body": "{% elseif %}"
+ },
+ "endif": {
+ "scope": "tpl",
+ "description": "{% endif %}",
+ "prefix": "endif",
+ "body": "{% endif %}"
+ },
+ "ifequal": {
+ "scope": "tpl",
+ "description": "{% ifequal %}",
+ "prefix": "ifequal",
+ "body": "{% ifequal %}$0{% endifequal %}"
+ },
+ "endifequal": {
+ "scope": "tpl",
+ "description": "{% endifequal %}",
+ "prefix": "endifequal",
+ "body": "{% endifequal %}"
+ },
+ "ifnotequal": {
+ "scope": "tpl",
+ "description": "{% ifnotequal %}",
+ "prefix": "ifnotequal",
+ "body": "{% ifnotequal %}$0{% endifnotequal %}"
+ },
+ "endifnotequal": {
+ "scope": "tpl",
+ "description": "{% endifnotequal %}",
+ "prefix": "endifnotequal",
+ "body": "{% endifnotequal %}"
+ },
+ "image": {
+ "scope": "tpl",
+ "description": "{% image %}",
+ "prefix": "image",
+ "body": "{% image $0 %}"
+ },
+ "image_data_url": {
+ "scope": "tpl",
+ "description": "{% image_data_url %}",
+ "prefix": "image_data_url",
+ "body": "{% image_data_url $0 %}"
+ },
+ "image_url": {
+ "scope": "tpl",
+ "description": "{% image_url %}",
+ "prefix": "image_url",
+ "body": "{% image_url $0 %}"
+ },
+ "include": {
+ "scope": "tpl",
+ "description": "{% include %}",
+ "prefix": "include",
+ "body": "{% include \"$0.tpl\" %}"
+ },
+ "inherit": {
+ "scope": "tpl",
+ "description": "{% inherit %}",
+ "prefix": "inherit",
+ "body": "{% inherit %}"
+ },
+ "javascript": {
+ "scope": "tpl",
+ "description": "{% javascript %}",
+ "prefix": "javascript",
+ "body": "{% javascript %}$0{% endjavascript %}"
+ },
+ "endjavascript": {
+ "scope": "tpl",
+ "description": "{% endjavascript %}",
+ "prefix": "endjavascript",
+ "body": "{% endjavascript %}"
+ },
+ "lib": {
+ "scope": "tpl",
+ "description": "{% lib %}",
+ "prefix": "lib",
+ "body": "{% lib \"$0\" %}"
+ },
+ "load": {
+ "scope": "tpl",
+ "description": "{% load %}",
+ "prefix": "load",
+ "body": "{% load $0 %}"
+ },
+ "media": {
+ "scope": "tpl",
+ "description": "{% media %}",
+ "prefix": "media",
+ "body": "{% media $0 %}"
+ },
+ "now": {
+ "scope": "tpl",
+ "description": "{% now %}",
+ "prefix": "now",
+ "body": "{% now %}"
+ },
+ "overrules": {
+ "scope": "tpl",
+ "description": "{% overrules %}",
+ "prefix": "overrules",
+ "body": "{% overrules %}"
+ },
+ "print": {
+ "scope": "tpl",
+ "description": "{% print %}",
+ "prefix": "print",
+ "body": "{% print $0 %}"
+ },
+ "print_req": {
+ "scope": "tpl",
+ "description": "{% print %}",
+ "prefix": "print_req",
+ "body": "{% print m.req|make_list %}"
+ },
+ "raw": {
+ "scope": "tpl",
+ "description": "{% raw %}",
+ "prefix": "raw",
+ "body": "{% raw %}$0{% endraw %}"
+ },
+ "endraw": {
+ "scope": "tpl",
+ "description": "{% endraw %}",
+ "prefix": "endraw",
+ "body": "{% endraw %}"
+ },
+ "spaceless": {
+ "scope": "tpl",
+ "description": "{% spaceless %}",
+ "prefix": "spaceless",
+ "body": "{% spaceless %}$0{% endspaceless %}"
+ },
+ "endspaceless": {
+ "scope": "tpl",
+ "description": "{% endspaceless %}",
+ "prefix": "endspaceless",
+ "body": "{% endspaceless %}"
+ },
+ "trans": {
+ "scope": "tpl",
+ "description": "{% trans %}",
+ "prefix": "trans",
+ "body": "{% trans \"$0\" %}"
+ },
+ "url": {
+ "scope": "tpl",
+ "description": "{% url %}",
+ "prefix": "url",
+ "body": "{% url $0 %}"
+ },
+ "with": {
+ "scope": "tpl",
+ "description": "{% with %}",
+ "prefix": "with",
+ "body": "{% with $1 as $2 %}$0{% endwith %}"
+ },
+ "endwith": {
+ "scope": "tpl",
+ "description": "{% endwith %}",
+ "prefix": "endwith",
+ "body": "{% endwith %}"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-tags-module.code-snippets b/snippets/tpl-tags-module.code-snippets
new file mode 100644
index 0000000..08e03ac
--- /dev/null
+++ b/snippets/tpl-tags-module.code-snippets
@@ -0,0 +1,152 @@
+{
+ "button": {
+ "scope": "tpl",
+ "description": "{% button %}",
+ "prefix": "button",
+ "body": "{% button text=\"$1\" ${2|action,postback|}={$0} %}"
+ },
+ "chart_pie": {
+ "scope": "tpl",
+ "description": "{% chart_pie %}",
+ "prefix": "chart_pie",
+ "body": "{% chart_pie data=$0 %}"
+ },
+ "chart_pie3d": {
+ "scope": "tpl",
+ "description": "{% chart_pie3d %}",
+ "prefix": "chart_pie3d",
+ "body": "{% chart_pie3d data=$0 %}"
+ },
+ "debug": {
+ "scope": "tpl",
+ "description": "{% debug %}",
+ "prefix": "debug",
+ "body": "{% debug %}"
+ },
+ "draggable": {
+ "scope": "tpl",
+ "description": "{% draggable %}",
+ "prefix": "draggable",
+ "body": "{% draggable id=$1 tag=$0 %}"
+ },
+ "droppable": {
+ "scope": "tpl",
+ "description": "{% droppable %}",
+ "prefix": "droppable",
+ "body": "{% droppable id=$1 tag=$0 %}"
+ },
+ "google_chart": {
+ "scope": "tpl",
+ "description": "{% google_chart %}",
+ "prefix": "google_chart",
+ "body": "{% google_chart $0 %}"
+ },
+ "inplace_textbox": {
+ "scope": "tpl",
+ "description": "{% inplace_textbox %}",
+ "prefix": "inplace_textbox",
+ "body": "{% inplace_textbox value=$0 %}"
+ },
+ "lazy": {
+ "scope": "tpl",
+ "description": "{% lazy %}",
+ "prefix": "lazy",
+ "body": "{% lazy $0 %}"
+ },
+ "live": {
+ "scope": "tpl",
+ "description": "{% live %}",
+ "prefix": "live",
+ "body": "{% live template=$1 topic=$0 %}"
+ },
+ "loremipsum": {
+ "scope": "tpl",
+ "description": "{% loremipsum %}",
+ "prefix": "loremipsum",
+ "body": "{% loremipsum words=${0:10} %}"
+ },
+ "mailinglist_subscribe": {
+ "scope": "tpl",
+ "description": "{% mailinglist_subscribe %}",
+ "prefix": "mailinglist_subscribe",
+ "body": "{% mailinglist_subscribe id=$1 template=\"${0:_scomp_mailinglist_subscribe}.tpl\" %}"
+ },
+ "menu": {
+ "scope": "tpl",
+ "description": "{% menu %}",
+ "prefix": "menu",
+ "body": "{% menu id=$0 %}"
+ },
+ "pager": {
+ "scope": "tpl",
+ "description": "{% pager %}",
+ "prefix": "pager",
+ "body": "{% pager result=$0 %}"
+ },
+ "poll": {
+ "scope": "tpl",
+ "description": "{% poll %}",
+ "prefix": "poll",
+ "body": "{% poll id=$0 %}"
+ },
+ "script": {
+ "scope": "tpl",
+ "description": "{% script %}",
+ "prefix": "script",
+ "body": "{% script %}"
+ },
+ "sortable": {
+ "scope": "tpl",
+ "description": "{% sortable %}",
+ "prefix": "sortable",
+ "body": "{% sortable id=$1 tag=$0 %}"
+ },
+ "sorter": {
+ "scope": "tpl",
+ "description": "{% sorter %}",
+ "prefix": "sorter",
+ "body": "{% sorter id=$1 tag=$0 %}"
+ },
+ "spinner": {
+ "scope": "tpl",
+ "description": "{% spinner %}",
+ "prefix": "spinner",
+ "body": "{% spinner %}"
+ },
+ "tabs": {
+ "scope": "tpl",
+ "description": "{% tabs %}",
+ "prefix": "tabs",
+ "body": "{% tabs id=$0 %}"
+ },
+ "validate": {
+ "scope": "tpl",
+ "description": "{% validate %}",
+ "prefix": "validate",
+ "body": "{% validate id=$1 type={${2|acceptance,confirmation,custom,date,email,email_unique,format,length,name_unique,numericality,postback,presence,username_unique|}} %}"
+ },
+ "wire": {
+ "scope": "tpl",
+ "description": "{% wire %}",
+ "prefix": "wire",
+ "body": "{% wire $0 %}"
+ },
+ "wire_submit": {
+ "scope": "tpl",
+ "description": "{% wire %}",
+ "prefix": "wire_submit",
+ "body": "{% wire type=\"submit\" id=\"$1\" postback=\"$2\" delegate=\"$3\" %}"
+ },
+ "wire_args": {
+ "scope": "tpl",
+ "description": "{% wire_args %}",
+ "prefix": "wire_args",
+ "body": "{% wire_args $0 %}"
+ },
+ "worker": {
+ "scope": "tpl",
+ "description": "{% worker %}",
+ "prefix": "worker",
+ "body": "{% worker name=\"$1\" src=\"$2.js\" args=%{$3} %}"
+ },
+}
\ No newline at end of file
diff --git a/snippets/tpl-validators.code-snippets b/snippets/tpl-validators.code-snippets
new file mode 100644
index 0000000..b7c62f3
--- /dev/null
+++ b/snippets/tpl-validators.code-snippets
@@ -0,0 +1,80 @@
+{
+ "acceptance": {
+ "scope": "tpl",
+ "description": "acceptance",
+ "prefix": "val_acceptance",
+ "body": "{% validate id=$1 type={acceptance} %}"
+ },
+ "confirmation": {
+ "scope": "tpl",
+ "description": "confirmation",
+ "prefix": "val_confirmation",
+ "body": "{% validate id=$1 type={confirmation match=$2} %}"
+ },
+ "custom": {
+ "scope": "tpl",
+ "description": "custom",
+ "prefix": "val_custom",
+ "body": "{% validate id=$1 type={custom against=$2} %}"
+ },
+ "date": {
+ "scope": "tpl",
+ "description": "date",
+ "prefix": "val_date",
+ "body": "{% validate id=$1 type={date separator=\"${2:-}\" format=\"${3:l}\"} %}"
+ },
+ "email": {
+ "scope": "tpl",
+ "description": "email",
+ "prefix": "val_email",
+ "body": "{% validate id=$1 type={email} %}"
+ },
+ "email_unique": {
+ "scope": "tpl",
+ "description": "email_unique",
+ "prefix": "val_email_unique",
+ "body": "{% validate id=$1 type={email} type={email_unique} %}"
+ },
+ "format": {
+ "scope": "tpl",
+ "description": "format",
+ "prefix": "val_format",
+ "body": "{% validate id=$1 type={format pattern=\"$2\"} %}"
+ },
+ "length": {
+ "scope": "tpl",
+ "description": "length",
+ "prefix": "val_length",
+ "body": "{% validate id=$1 type={length ${2|is,minimum,maximum|}=$3} %}"
+ },
+ "name_unique": {
+ "scope": "tpl",
+ "description": "name_unique",
+ "prefix": "val_name_unique",
+ "body": "{% validate id=$1 type={name_unique} %}"
+ },
+ "numericality": {
+ "scope": "tpl",
+ "description": "numericality",
+ "prefix": "val_numericality",
+ "body": "{% validate id=$1 type={numericality ${2|is,minimum,maximum|}=$3} %}"
+ },
+ "postback": {
+ "scope": "tpl",
+ "description": "postback",
+ "prefix": "val_postback",
+ "body": "{% validate id=$1 type={postback event=\"$2\"} %}"
+ },
+ "presence": {
+ "scope": "tpl",
+ "description": "presence",
+ "prefix": "val_presence",
+ "body": "{% validate id=$1 type={presence} %}"
+ },
+ "username_unique": {
+ "scope": "tpl",
+ "description": "username_unique",
+ "prefix": "val_username_unique",
+ "body": "{% validate id=$1 type={username_unique} %}"
+ },
+}
\ No newline at end of file