chore: Extract languages from zed crate (#8270)

- Moves languages module from `zed` into a separate crate. That way we
have less of a long pole at the end of compilation.
- Removes moot dependencies on editor/picker. This is totally harmless
and might help in the future if we decide to decouple picker from
editor.

Before:
```
Number of crates that depend on 'picker' but not on 'editor': 1
Total number of crates that depend on 'picker': 13
Total number of crates that depend on 'editor': 30
```
After:
```
Number of crates that depend on 'picker' but not on 'editor': 5
Total number of crates that depend on 'picker': 12
Total number of crates that depend on 'editor': 26
```
The more crates depend on just picker but not editor, the better in that
case.

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz
2024-02-23 15:56:08 +01:00
committed by GitHub
parent 7cf0696c89
commit 0f584cb353
309 changed files with 221 additions and 154 deletions
+12
View File
@@ -0,0 +1,12 @@
("(" @open ")" @close)
("[" @open "]" @close)
("[|" @open "|]" @close)
("{" @open "}" @close)
("<" @open ">" @close)
("\"" @open "\"" @close)
("begin" @open "end" @close)
("struct" @open "end" @close)
("sig" @open "end" @close)
("object" @open "end" @close)
("do" @open "done" @close)
+19
View File
@@ -0,0 +1,19 @@
name = "OCaml"
grammar = "ocaml"
path_suffixes = ["ml"]
block_comment = ["(* ", "*)"]
autoclose_before = ";,=)}]"
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "<", end = ">", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "[|", end = "|", close = true, newline = true, not_in = ["string"] },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "begin", end = " end", close = true, newline = true },
{ start = "struct", end = " end", close = true, newline = true },
{ start = "sig", end = " end", close = true, newline = true },
# HACK: For some reason `object` alone does not work
{ start = "object ", end = "end", close = true, newline = true },
{ start = "do", end = " done", close = true, newline = true }
]
+142
View File
@@ -0,0 +1,142 @@
; Modules
;--------
[(module_name) (module_type_name)] @title
; Types
;------
[(class_name) (class_type_name) (type_constructor)] @type
[(constructor_name) (tag)] @constructor
; Functions
;----------
(let_binding
pattern: (value_name) @function
(parameter))
(let_binding
pattern: (value_name) @function
body: [(fun_expression) (function_expression)])
(value_specification (value_name) @function)
(external (value_name) @function)
(method_name) @function
(infix_expression
left: (value_path (value_name) @function)
operator: (concat_operator) @operator
(#eq? @operator "@@"))
(infix_expression
operator: (rel_operator) @operator
right: (value_path (value_name) @function)
(#eq? @operator "|>"))
(application_expression
function: (value_path (value_name) @function))
; Variables
;----------
[(type_variable) (value_pattern)] @variable
; Properties
;-----------
[(label_name) (field_name) (instance_variable_name)] @property
; Constants
;----------
(boolean) @boolean
[(number) (signed_number)] @number
[(string) (character)] @string
(quoted_string "{" @string "}" @string) @string
(quoted_string_content) @string
(escape_sequence) @string.escape
[
(conversion_specification)
(pretty_printing_indication)
] @punctuation.special
; Operators
;----------
(match_expression (match_operator) @keyword)
(value_definition [(let_operator) (let_and_operator)] @keyword)
[
(prefix_operator)
(sign_operator)
(pow_operator)
(mult_operator)
(add_operator)
(concat_operator)
(rel_operator)
(and_operator)
(or_operator)
(assign_operator)
(hash_operator)
(indexing_operator)
(let_operator)
(let_and_operator)
(match_operator)
] @operator
["*" "#" "::" "<-"] @operator
; Keywords
;---------
[
"and" "as" "assert" "begin" "class" "constraint" "do" "done" "downto" "else"
"end" "exception" "external" "for" "fun" "function" "functor" "if" "in"
"include" "inherit" "initializer" "lazy" "let" "match" "method" "module"
"mutable" "new" "nonrec" "object" "of" "open" "private" "rec" "sig" "struct"
"then" "to" "try" "type" "val" "virtual" "when" "while" "with"
] @keyword
; Punctuation
;------------
["(" ")" "[" "]" "{" "}" "[|" "|]" "[<" "[>"] @punctuation.bracket
(object_type ["<" ">"] @punctuation.bracket)
[
"," "." ";" ":" "=" "|" "~" "?" "+" "-" "!" ">" "&"
"->" ";;" ":>" "+=" ":=" ".."
] @punctuation.delimiter
; Attributes
;-----------
[
(attribute)
(item_attribute)
(floating_attribute)
(extension)
(item_extension)
(quoted_extension)
(quoted_item_extension)
"%"
] @attribute
(attribute_id) @tag
; Comments
;---------
[(comment) (line_number_directive) (directive) (shebang)] @comment
+43
View File
@@ -0,0 +1,43 @@
[
(let_binding)
(type_binding)
(method_definition)
(external)
(value_specification)
(method_specification)
(match_case)
(function_expression)
(field_declaration)
(field_expression)
] @indent
(_ "[" "]" @end) @indent
(_ "[|" "|]" @end) @indent
(_ "<" ">" @end) @indent
(_ "{" "}" @end) @indent
(_ "(" ")" @end) @indent
(_ "object" @start "end" @end) @indent
(structure
"struct" @start
"end" @end) @indent
(signature
"sig" @start
"end" @end) @indent
(parenthesized_expression
"begin" @start
"end") @indent
(do_clause
"do" @start
"done" @end) @indent
";;" @outdent
+59
View File
@@ -0,0 +1,59 @@
(_structure_item/value_definition
"let" @context
(let_binding
pattern: (_) @name)) @item
(_structure_item/exception_definition
"exception" @context
(constructor_declaration
(constructor_name) @name)) @item
(_structure_item/module_definition
"module" @context
(module_binding
name: (module_name) @name)) @item
(module_type_definition
"module" @context
"type" @context
name: (_) @name) @item
(type_definition
"type" @context
(type_binding name: (_) @name)) @item
(value_specification
"val" @context
(value_name) @name) @item
(class_definition
"class" @context
(class_binding
"virtual"? @context
name: (_) @name)) @item
(class_type_definition
"class" @context
"type" @context
(class_type_binding
"virtual"? @context
name: (_) @name)) @item
(instance_variable_definition
"val" @context
"method"? @context
name: (_) @name) @item
(method_specification
"method" @context
"virtual"? @context
(method_name) @name) @item
(method_definition
"method" @context
"virtual"? @context
name: (_) @name) @item
(external
"external" @context
(value_name) @name) @item