diff options
| author | ObserverOfTime <chronobserver@disroot.org> | 2023-08-19 19:28:45 +0300 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2024-01-19 16:58:37 +0100 |
| commit | 17fae3f4a3c81d17c3b40dfa815cca77116b81d0 (patch) | |
| tree | 1362cfe64a0f72c5bcbe9f5501b3cc12593b8421 /queries | |
| parent | feat(locals)!: switch to upstream captures (diff) | |
| download | nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar.gz nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar.bz2 nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar.lz nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar.xz nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.tar.zst nvim-treesitter-17fae3f4a3c81d17c3b40dfa815cca77116b81d0.zip | |
feat(injections): add printf format strings
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/awk/injections.scm | 8 | ||||
| -rw-r--r-- | queries/bash/injections.scm | 25 | ||||
| -rw-r--r-- | queries/c/injections.scm | 67 | ||||
| -rw-r--r-- | queries/go/injections.scm | 14 | ||||
| -rw-r--r-- | queries/java/injections.scm | 7 | ||||
| -rw-r--r-- | queries/kotlin/injections.scm | 8 | ||||
| -rw-r--r-- | queries/lua/injections.scm | 17 | ||||
| -rw-r--r-- | queries/printf/highlights.scm | 1 | ||||
| -rw-r--r-- | queries/python/injections.scm | 5 | ||||
| -rw-r--r-- | queries/teal/injections.scm | 17 |
10 files changed, 169 insertions, 0 deletions
diff --git a/queries/awk/injections.scm b/queries/awk/injections.scm index bc35c8312..24db57d67 100644 --- a/queries/awk/injections.scm +++ b/queries/awk/injections.scm @@ -3,3 +3,11 @@ ((regex) @injection.content (#set! injection.language "regex")) + +((print_statement + (exp_list . (string) @injection.content)) + (#set! injection.language "printf")) + +((printf_statement + (exp_list . (string) @injection.content)) + (#set! injection.language "printf")) diff --git a/queries/bash/injections.scm b/queries/bash/injections.scm index fdb03cda5..516df3b3d 100644 --- a/queries/bash/injections.scm +++ b/queries/bash/injections.scm @@ -8,3 +8,28 @@ (heredoc_body) @injection.content (heredoc_end) @injection.language) (#downcase! @injection.language)) + +; printf 'format' +((command + name: (command_name) @_command + . argument: [(string) (raw_string)] @injection.content) + (#eq? @_command "printf") + (#set! injection.language "printf")) + +; printf -v var 'format' +((command + name: (command_name) @_command + argument: (word) @_arg + . (_) . argument: [(string) (raw_string)] @injection.content) + (#eq? @_command "printf") + (#eq? @_arg "-v") + (#set! injection.language "printf")) + +; printf -- 'format' +((command + name: (command_name) @_command + argument: (word) @_arg + . argument: [(string) (raw_string)] @injection.content) + (#eq? @_command "printf") + (#eq? @_arg "--") + (#set! injection.language "printf")) diff --git a/queries/c/injections.scm b/queries/c/injections.scm index 6b1fc3522..086dede9e 100644 --- a/queries/c/injections.scm +++ b/queries/c/injections.scm @@ -12,6 +12,73 @@ (#lua-match? @injection.content "/[*][!<*][^a-zA-Z]") (#set! injection.language "doxygen")) +((call_expression + function: (identifier) @_function + arguments: (argument_list + . (string_literal (string_content) @injection.content))) + (#any-of? @_function "printf" "printf_s" + "vprintf" "vprintf_s" + "scanf" "scanf_s" + "vscanf" "vscanf_s" + "wprintf" "wprintf_s" + "vwprintf" "vwprintf_s" + "wscanf" "wscanf_s" + "vwscanf" "vwscanf_s" + "cscanf" "_cscanf" + "printw" + "scanw") + (#set! injection.language "printf")) + +((call_expression + function: (identifier) @_function + arguments: (argument_list + (_) . (string_literal (string_content) @injection.content))) + (#any-of? @_function "fprintf" "fprintf_s" + "sprintf" + "dprintf" + "fscanf" "fscanf_s" + "sscanf" "sscanf_s" + "vsscanf" "vsscanf_s" + "vfprintf" "vfprintf_s" + "vsprintf" + "vdprintf" + "fwprintf" "fwprintf_s" + "vfwprintf" "vfwprintf_s" + "fwscanf" "fwscanf_s" + "swscanf" "swscanf_s" + "vswscanf" "vswscanf_s" + "vfscanf" "vfscanf_s" + "vfwscanf" "vfwscanf_s" + "wprintw" + "vw_printw" "vwprintw" + "wscanw" + "vw_scanw" "vwscanw") + (#set! injection.language "printf")) + +((call_expression + function: (identifier) @_function + arguments: (argument_list + (_) . (_) . (string_literal (string_content) @injection.content))) + (#any-of? @_function "sprintf_s" + "snprintf" "snprintf_s" + "vsprintf_s" + "vsnprintf" "vsnprintf_s" + "swprintf" "swprintf_s" + "snwprintf_s" + "vswprintf" "vswprintf_s" + "vsnwprintf_s" + "mvprintw" + "mvscanw") + (#set! injection.language "printf")) + +((call_expression + function: (identifier) @_function + arguments: (argument_list + (_) . (_) . (_) . (string_literal (string_content) @injection.content))) + (#any-of? @_function "mvwprintw" + "mvwscanw") + (#set! injection.language "printf")) + ; TODO: add when asm is added ; (gnu_asm_expression assembly_code: (string_literal) @injection.content ; (#set! injection.language "asm")) diff --git a/queries/go/injections.scm b/queries/go/injections.scm index affc7a115..cf19ebac5 100644 --- a/queries/go/injections.scm +++ b/queries/go/injections.scm @@ -19,6 +19,20 @@ (#offset! @injection.content 0 1 0 -1) (#set! injection.language "regex"))) + ((comment) @injection.content (#match? @injection.content "/\\*!([a-zA-Z]+:)?re2c") (#set! injection.language "re2c")) + +((call_expression + function: (selector_expression field: (field_identifier) @_method) + arguments: (argument_list . (interpreted_string_literal) @injection.content)) + (#any-of? @_method "Printf" "Sprintf" "Fatalf" "Scanf") + (#set! injection.language "printf")) + +((call_expression + function: (selector_expression field: (field_identifier) @_method) + arguments: (argument_list (_) . (interpreted_string_literal) @injection.content)) + (#eq? @_method "Fprintf") + (#set! injection.language "printf")) + diff --git a/queries/java/injections.scm b/queries/java/injections.scm index d79ffa6f1..8696c16ff 100644 --- a/queries/java/injections.scm +++ b/queries/java/injections.scm @@ -7,3 +7,10 @@ ((block_comment) @injection.content (#lua-match? @injection.content "/[*][!<*][^a-zA-Z]") (#set! injection.language "doxygen")) + +((method_invocation + name: (identifier) @_method + arguments: (argument_list + . (string_literal . (_) @injection.content))) + (#any-of? @_method "format" "printf") + (#set! injection.language "printf")) diff --git a/queries/kotlin/injections.scm b/queries/kotlin/injections.scm index 757259d10..8ac2eba60 100644 --- a/queries/kotlin/injections.scm +++ b/queries/kotlin/injections.scm @@ -34,3 +34,11 @@ (value_arguments (value_argument (string_literal) @injection.content (#set! injection.language "regex"))))) + +; "pi = %.2f".format(3.14159) +((call_expression + (navigation_expression + (string_literal) @injection.content + (navigation_suffix (simple_identifier) @_method))) + (#eq? @_method "format") + (#set! injection.language "printf")) diff --git a/queries/lua/injections.scm b/queries/lua/injections.scm index 57ea527d4..03e057dfe 100644 --- a/queries/lua/injections.scm +++ b/queries/lua/injections.scm @@ -135,6 +135,23 @@ (#set! injection.language "luap") (#set! injection.include-children)))) +; string.format("pi = %.2f", 3.14159) +((function_call + (dot_index_expression + field: (identifier) @_method) + arguments: (arguments + . (string (string_content) @injection.content))) + (#eq? @_method "format") + (#set! injection.language "printf")) + +; ("pi = %.2f"):format(3.14159) +((function_call + (method_index_expression + table: (_ (string (string_content) @injection.content)) + method: (identifier) @_method)) + (#eq? @_method "format") + (#set! injection.language "printf")) + (comment content: (_) @injection.content (#set! injection.language "comment")) diff --git a/queries/printf/highlights.scm b/queries/printf/highlights.scm new file mode 100644 index 000000000..db5ef9a3f --- /dev/null +++ b/queries/printf/highlights.scm @@ -0,0 +1 @@ +(format) @character diff --git a/queries/python/injections.scm b/queries/python/injections.scm index aa36a5af9..87d1c3478 100644 --- a/queries/python/injections.scm +++ b/queries/python/injections.scm @@ -6,5 +6,10 @@ (#eq? @_re "re") (#set! injection.language "regex")) +((binary_operator + left: (string (string_content) @injection.content) + operator: "%") + (#set! injection.language "printf")) + ((comment) @injection.content (#set! injection.language "comment")) diff --git a/queries/teal/injections.scm b/queries/teal/injections.scm index 5eef08702..789826452 100644 --- a/queries/teal/injections.scm +++ b/queries/teal/injections.scm @@ -26,5 +26,22 @@ (#set! injection.language "c") ) +; string.format('...') +((function_call + (index + (identifier) @_base + key: (identifier) @_entry) + (arguments . (string) @injection.content)) + (#eq? @_base "string") + (#eq? @_entry "format") + (#set! injection.language "printf")) + +; ('...'):format() +((function_call + (method_index (string) @printf + key: (identifier) @_func)) + (#eq? @_func "format") + (#set! injection.language "printf")) + ((comment) @injection.content (#set! injection.language "comment")) |
