├── .DS_Store ├── .gitignore ├── README.md ├── extension.toml ├── languages └── surql │ ├── brackets.scm │ ├── config.toml │ ├── highlights.scm │ ├── outlines.scm │ └── overrides.scm └── sample.surql /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siteforge-io/surql-zed/44214d2c5aa720ea984725a4fd70a2ca50740f27/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | grammars 2 | target 3 | *.wasm 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # surql-zed 2 | -------------------------------------------------------------------------------- /extension.toml: -------------------------------------------------------------------------------- 1 | id = "surrealql" 2 | name = "SurrealDB SurrealQL Language Extension" 3 | version = "0.0.2" 4 | schema_version = 1 5 | authors = ["Albert Marashi "] 6 | description = "SurrealDB SurrealQL language support" 7 | repository = "https://github.com/siteforge-io/surql-zed" 8 | 9 | [grammars.surrealql] 10 | repository = "https://github.com/ce11an/tree-sitter-surrealql" 11 | commit = "9b341754ed2cc04687f3854326b27842de67f693" 12 | -------------------------------------------------------------------------------- /languages/surql/brackets.scm: -------------------------------------------------------------------------------- 1 | ("<" @open ">" @close) 2 | ("{" @open "}" @close) 3 | ("[" @open "]" @close) 4 | ("(" @open ")" @close) 5 | ; ("\"" @open "\"" @close) 6 | ; ("'" @open "'" @close) 7 | -------------------------------------------------------------------------------- /languages/surql/config.toml: -------------------------------------------------------------------------------- 1 | name = "Surreal Query Language" 2 | grammar = "surrealql" 3 | path_suffixes = ["surql"] 4 | line_comments = ["-- "] 5 | autoclose_before = ":\"'}]>" 6 | brackets = [ 7 | { start = "<", end = ">", close = true, newline = true }, 8 | { start = "{", end = "}", close = true, newline = true }, 9 | { start = "[", end = "]", close = true, newline = true }, 10 | { start = "(", end = ")", close = true, newline = true }, 11 | { start = "'", end = "'", close = true, newline = true }, 12 | { start = "\"", end = "\"", close = true, newline = true }, 13 | # { start = "!--", end = " --", close = true, newline = true }, 14 | # { start = "\"", end = "\"", close = true, newline = true, not_in = ["string"] }, 15 | # { start = "`", end = "`", close = true, newline = true, not_in = ["string"] }, 16 | ] 17 | -------------------------------------------------------------------------------- /languages/surql/highlights.scm: -------------------------------------------------------------------------------- 1 | 2 | ; Operators 3 | [ 4 | (binary_operator) 5 | (operator) 6 | ] @operator 7 | 8 | ; Literals 9 | [ 10 | (string) 11 | (prefixed_string) 12 | ] @string 13 | 14 | 15 | [ 16 | (int) 17 | (float) 18 | (decimal) 19 | (duration) 20 | ] @number 21 | 22 | [ 23 | (keyword_true) 24 | (keyword_false) 25 | ] @boolean 26 | 27 | 28 | [ 29 | (keyword_none) 30 | (keyword_null) 31 | ] @constant 32 | 33 | 34 | ; Comments 35 | (comment) @comment 36 | 37 | 38 | [ 39 | (custom_function_name) 40 | (function_name) 41 | ] @function 42 | 43 | ; Identifiers 44 | (identifier) @variable 45 | (variable_name) @attribute.special 46 | 47 | ; Properties 48 | (object_property 49 | (object_key) @property) 50 | 51 | (field_assignment 52 | (identifier) @property) 53 | 54 | 55 | ; Punctuation 56 | [ 57 | "(" 58 | ")" 59 | "[" 60 | "]" 61 | "<" 62 | ">" 63 | "{" 64 | "}" 65 | ] @punctuation.bracket 66 | [ 67 | "," 68 | ":" 69 | ] @punctuation.delimiter 70 | 71 | [ 72 | "=" 73 | ] @operator 74 | 75 | 76 | ; Types 77 | [ 78 | (type) 79 | (type_name) 80 | (parameterized_type) 81 | ] @type 82 | 83 | 84 | (record_id) @variable.special 85 | 86 | ; Special 87 | (graph_path) @operator 88 | 89 | ; Keywords 90 | [ 91 | (keyword_select) 92 | (keyword_from) 93 | (keyword_let) 94 | (keyword_else) 95 | (keyword_end) 96 | (keyword_only) 97 | (keyword_value) 98 | (keyword_as) 99 | (keyword_omit) 100 | (keyword_explain) 101 | (keyword_full) 102 | (keyword_parallel) 103 | (keyword_timeout) 104 | (keyword_fetch) 105 | (keyword_start_at) 106 | (keyword_limit) 107 | (keyword_by) 108 | (keyword_rand) 109 | (keyword_collate) 110 | (keyword_numeric) 111 | (keyword_asc) 112 | (keyword_desc) 113 | (keyword_order) 114 | (keyword_with) 115 | (keyword_index) 116 | (keyword_no_index) 117 | (keyword_where) 118 | (keyword_split) 119 | (keyword_at) 120 | (keyword_group) 121 | (keyword_all) 122 | (keyword_begin) 123 | (keyword_cancel) 124 | (keyword_commit) 125 | (keyword_transaction) 126 | (keyword_and) 127 | (keyword_or) 128 | (keyword_is) 129 | (keyword_not) 130 | (keyword_contains) 131 | (keyword_contains_not) 132 | (keyword_contains_all) 133 | (keyword_contains_any) 134 | (keyword_contains_none) 135 | (keyword_inside) 136 | (keyword_in) 137 | (keyword_not_inside) 138 | (keyword_all_inside) 139 | (keyword_any_inside) 140 | (keyword_none_inside) 141 | (keyword_outside) 142 | (keyword_intersects) 143 | (keyword_chebyshev) 144 | (keyword_cosine) 145 | (keyword_euclidean) 146 | (keyword_hamming) 147 | (keyword_jaccard) 148 | (keyword_manhattan) 149 | (keyword_minkowski) 150 | (keyword_pearson) 151 | (keyword_define) 152 | (keyword_analyzer) 153 | (keyword_event) 154 | (keyword_field) 155 | (keyword_function) 156 | (keyword_namespace) 157 | (keyword_param) 158 | (keyword_scope) 159 | (keyword_drop) 160 | (keyword_schemafull) 161 | (keyword_schemaless) 162 | (keyword_live) 163 | (keyword_diff) 164 | (keyword_flexible) 165 | (keyword_readonly) 166 | (keyword_jwks) 167 | (keyword_eddsa) 168 | (keyword_es256) 169 | (keyword_es384) 170 | (keyword_es512) 171 | (keyword_ps256) 172 | (keyword_ps384) 173 | (keyword_ps512) 174 | (keyword_rs256) 175 | (keyword_rs384) 176 | (keyword_rs512) 177 | (keyword_bm25) 178 | (keyword_doc_ids_cache) 179 | (keyword_doc_ids_order) 180 | (keyword_doc_lengths_cache) 181 | (keyword_doc_lengths_order) 182 | (keyword_postings_cache) 183 | (keyword_postings_order) 184 | (keyword_terms_cache) 185 | (keyword_terms_order) 186 | (keyword_highlights) 187 | (keyword_any) 188 | (keyword_normal) 189 | (keyword_relation) 190 | (keyword_out) 191 | (keyword_to) 192 | (keyword_changefeed) 193 | (keyword_content) 194 | (keyword_merge) 195 | (keyword_patch) 196 | (keyword_before) 197 | (keyword_after) 198 | (keyword_table) 199 | (keyword_root) 200 | (keyword_token) 201 | (keyword_use) 202 | (keyword_ns) 203 | (keyword_db) 204 | (keyword_on) 205 | (keyword_user) 206 | (keyword_roles) 207 | (keyword_remove) 208 | (keyword_create) 209 | (keyword_delete) 210 | (keyword_update) 211 | (keyword_insert) 212 | (keyword_into) 213 | (keyword_tokenizers) 214 | (keyword_filters) 215 | (keyword_when) 216 | (keyword_then) 217 | (keyword_type) 218 | (keyword_default) 219 | (keyword_assert) 220 | (keyword_permissions) 221 | (keyword_relate) 222 | (keyword_ignore) 223 | (keyword_values) 224 | (keyword_for) 225 | (keyword_info) 226 | (keyword_comment) 227 | (keyword_fields) 228 | (keyword_columns) 229 | (keyword_unique) 230 | (keyword_search) 231 | (keyword_session) 232 | (keyword_signin) 233 | (keyword_signup) 234 | (keyword_if) 235 | (keyword_exists) 236 | (keyword_database) 237 | (keyword_namespace) 238 | (keyword_password) 239 | (keyword_password_hash) 240 | (keyword_on_duplicate_key_update) 241 | (keyword_count) 242 | (keyword_set) 243 | (keyword_unset) 244 | (keyword_return) 245 | (keyword_dimension) 246 | (keyword_mtree) 247 | (keyword_dist) 248 | (keyword_overwrite) 249 | ] @keyword 250 | -------------------------------------------------------------------------------- /languages/surql/outlines.scm: -------------------------------------------------------------------------------- 1 | ; Nothing yet 2 | -------------------------------------------------------------------------------- /languages/surql/overrides.scm: -------------------------------------------------------------------------------- 1 | (comment) @comment 2 | 3 | [ 4 | (string) 5 | (prefixed_string) 6 | ] @string 7 | -------------------------------------------------------------------------------- /sample.surql: -------------------------------------------------------------------------------- 1 | $user; 2 | 3 | -- Define the parameter 4 | LET $name = "tobie"; 5 | -- Use the parameter 6 | CREATE person SET name = $name; 7 | 8 | -- Storing Query Results 9 | -- Define the parameter 10 | LET $adults = (SELECT * FROM person WHERE age > 18); 11 | -- Use the parameter 12 | UPDATE $adults SET adult = true; 13 | 14 | BEGIN TRANSACTION; 15 | CREATE account:one SET balance = 135605.16; 16 | CREATE account:two SET balance = 91031.31; 17 | UPDATE account:one SET balance += 300.00; 18 | UPDATE account:two SET balance -= 300.00; 19 | COMMIT TRANSACTION; 20 | 21 | 22 | CREATE person:100 CONTENT { 23 | name: 'Tobie', 24 | bar: NULL, 25 | company: 'SurrealDB', 26 | skills: ['Rust', 'Go', 'JavaScript'], 27 | }; 28 | 29 | -- Note: meta::tb(id) returns just the table name portion of a record ID 30 | CREATE townsperson SET 31 | created_at = time::now(), 32 | name = "Just a " + meta::tb(id); 33 | --------------------------------------------------------------------------------