diff --git a/languages.toml b/languages.toml
index d270c2ea..915fd81f 100644
--- a/languages.toml
+++ b/languages.toml
@@ -1700,10 +1700,9 @@ file-types = ["cairo"]
 roots = []
 comment-token = "//"
 indent = { tab-width = 4, unit = "    " }
-
-[[grammar]]
-name = "cairo"
-source = { git = "https://github.com/archseer/tree-sitter-cairo", rev = "b249662a1eefeb4d71c9529cdd971e74fecc10fe" }
+# auto-format = true
+language-server = { command = "cairo-language-server", args = [] }
+grammar = "rust"
 
 [[language]]
 name = "cpon"
diff --git a/runtime/queries/cairo/highlights.scm b/runtime/queries/cairo/highlights.scm
index c10ce5e0..ae55c7fa 100644
--- a/runtime/queries/cairo/highlights.scm
+++ b/runtime/queries/cairo/highlights.scm
@@ -1,94 +1 @@
-(ERROR) @error
-
-((identifier) @constant
- (#match? @constant "^[A-Z][A-Z\\d_]+$"))
-((identifier_def) @constant
- (#match? @constant "^[A-Z][A-Z\\d_]+$"))
-
-((identifier) @namespace
-  (#match? @namespace "^[A-Z]"))
-((identifier_def) @namespace
-  (#match? @namespace "^[A-Z]"))
-
-(identifier "." @punctuation)
-(function_call (identifier) @function)
-(func (identifier_def) @function)
-
-(string) @string
-(atom_short_string) @string
-
-(code_element_directive) @keyword.directive
-"return" @keyword
-
-(number) @constant.numeric
-(atom_hex_number) @constant.numeric
-
-(comment) @comment
-
-"*" @special
-(type) @type
-
-[
-  "felt"
-  ; "codeoffset"
-] @type.builtin
-
-[
-  "if"
-  "else"
-  "assert"
-  "with"
-  "with_attr"
-] @keyword.control
-
-[
-  "from"
-  "import"
-  "func"
-  "namespace"
-] @keyword ; keyword.declaration
-
-[
-  "let"
-  "const"
-  "local"
-  "struct"
-  "alloc_locals"
-  "tempvar"
-] @keyword
-
-(decorator) @attribute
-
-[
-  "="
-  "+"
-  "-"
-  "*"
-  "/"
-  ; "%"
-  ; "!"
-  ; ">"
-  ; "<"
-  ; "\\"
-  ; "&"
-  ; "?"
-  ; "^"
-  ; "~"
-  "=="
-  "!="
-  "new"
-] @operator
-
-[
-  "("
-  ")"
-  "["
-  "]"
-  "{"
-  "}"
-] @punctuation.bracket
-
-[
-  ","
-  ":"
-] @punctuation.delimiter
+; inherits: rust
diff --git a/runtime/queries/cairo/indents.scm b/runtime/queries/cairo/indents.scm
new file mode 100644
index 00000000..ae55c7fa
--- /dev/null
+++ b/runtime/queries/cairo/indents.scm
@@ -0,0 +1 @@
+; inherits: rust
diff --git a/runtime/queries/cairo/injections.scm b/runtime/queries/cairo/injections.scm
index e6f9be1b..a2358b1c 100644
--- a/runtime/queries/cairo/injections.scm
+++ b/runtime/queries/cairo/injections.scm
@@ -1,5 +1,3 @@
-((hint) @injection.content
- (#set! injection.language "python"))
-
-((comment) @injection.content
+([(line_comment) (block_comment)] @injection.content
  (#set! injection.language "comment"))
+
diff --git a/runtime/queries/cairo/locals.scm b/runtime/queries/cairo/locals.scm
new file mode 100644
index 00000000..ae55c7fa
--- /dev/null
+++ b/runtime/queries/cairo/locals.scm
@@ -0,0 +1 @@
+; inherits: rust
diff --git a/runtime/queries/cairo/textobjects.scm b/runtime/queries/cairo/textobjects.scm
new file mode 100644
index 00000000..ae55c7fa
--- /dev/null
+++ b/runtime/queries/cairo/textobjects.scm
@@ -0,0 +1 @@
+; inherits: rust