From 63b6f1f98460666ef5278f1d5795374245114550 Mon Sep 17 00:00:00 2001 From: ObserverOfTime Date: Wed, 26 Oct 2022 12:58:34 +0300 Subject: [PATCH] feat(arduino): separate from cpp --- lua/nvim-treesitter/parsers.lua | 9 ++- queries/arduino/folds.scm | 1 + queries/arduino/highlights.scm | 111 ++++++++++++++++++++++++++++++++ queries/arduino/indents.scm | 1 + queries/arduino/injections.scm | 3 + queries/arduino/locals.scm | 1 + 6 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 queries/arduino/folds.scm create mode 100644 queries/arduino/highlights.scm create mode 100644 queries/arduino/indents.scm create mode 100644 queries/arduino/injections.scm create mode 100644 queries/arduino/locals.scm diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index e2e521224..2860dee53 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -2,7 +2,6 @@ local api = vim.api local ts = vim.treesitter local filetype_to_parsername = { - arduino = "cpp", javascriptreact = "javascript", ecma = "javascript", jsx = "javascript", @@ -1300,6 +1299,14 @@ list.awk = { }, } +list.arduino = { + install_info = { + url = "https://github.com/ObserverOfTime/tree-sitter-arduino", + files = { "src/parser.c", "src/scanner.cc" }, + }, + maintainers = { "@ObserverOfTime" }, +} + local M = { list = list, filetype_to_parsername = filetype_to_parsername, diff --git a/queries/arduino/folds.scm b/queries/arduino/folds.scm new file mode 100644 index 000000000..b617fdc56 --- /dev/null +++ b/queries/arduino/folds.scm @@ -0,0 +1 @@ +; inherits: cpp diff --git a/queries/arduino/highlights.scm b/queries/arduino/highlights.scm new file mode 100644 index 000000000..a4e74ae89 --- /dev/null +++ b/queries/arduino/highlights.scm @@ -0,0 +1,111 @@ +; inherits: cpp + +((identifier) @function.builtin + (#any-of? @function.builtin + ; Digital I/O + "digitalRead" + "digitalWrite" + "pinMode" + ; Analog I/O + "analogRead" + "analogReference" + "analogWrite" + ; Zero, Due & MKR Family + "analogReadResolution" + "analogWriteResolution" + ; Advanced I/O + "noTone" + "pulseIn" + "pulseInLong" + "shiftIn" + "shiftOut" + "tone" + ; Time + "delay" + "delayMicroseconds" + "micros" + "millis" + ; Math + "abs" + "constrain" + "map" + "max" + "min" + "pow" + "sq" + "sqrt" + ; Trigonometry + "cos" + "sin" + "tan" + ; Characters + "isAlpha" + "isAlphaNumeric" + "isAscii" + "isControl" + "isDigit" + "isGraph" + "isHexadecimalDigit" + "isLowerCase" + "isPrintable" + "isPunct" + "isSpace" + "isUpperCase" + "isWhitespace" + ; Random Numbers + "random" + "randomSeed" + ; Bits and Bytes + "bit" + "bitClear" + "bitRead" + "bitSet" + "bitWrite" + "highByte" + "lowByte" + ; External Interrupts + "attachInterrupt" + "detachInterrupt" + ; Interrupts + "interrupts" + "noInterrupts" + )) + +((identifier) @type.builtin + (#any-of? @type.builtin + "Serial" + "SPI" + "Stream" + "Wire" + "Keyboard" + "Mouse" + "String" + )) + +((identifier) @constant.builtin + (#any-of? @constant.builtin + "HIGH" + "LOW" + "INPUT" + "OUTPUT" + "INPUT_PULLUP" + "LED_BUILTIN" + )) + +(function_definition + (function_declarator + declarator: (identifier) @function.builtin) + (#any-of? @function.builtin "loop" "setup")) + +(call_expression + function: (primitive_type) @function.builtin) + +(call_expression + function: (identifier) @constructor + (#any-of? @constructor "SPISettings" "String")) + +(declaration + (type_identifier) @type.builtin + (function_declarator + declarator: (identifier) @constructor) + (#eq? @type.builtin "SPISettings")) diff --git a/queries/arduino/indents.scm b/queries/arduino/indents.scm new file mode 100644 index 000000000..b617fdc56 --- /dev/null +++ b/queries/arduino/indents.scm @@ -0,0 +1 @@ +; inherits: cpp diff --git a/queries/arduino/injections.scm b/queries/arduino/injections.scm new file mode 100644 index 000000000..ce1e7948a --- /dev/null +++ b/queries/arduino/injections.scm @@ -0,0 +1,3 @@ +(preproc_arg) @arduino + +(comment) @comment diff --git a/queries/arduino/locals.scm b/queries/arduino/locals.scm new file mode 100644 index 000000000..b617fdc56 --- /dev/null +++ b/queries/arduino/locals.scm @@ -0,0 +1 @@ +; inherits: cpp