From 5e83307a439f5a432f056f5731381ff911f2a155 Mon Sep 17 00:00:00 2001 From: Stephan Seitz Date: Sat, 27 Jun 2020 20:05:35 +0200 Subject: [PATCH] Add C/C++ textobjects --- queries/c/textobjects.scm | 47 +++++++++++++++++++++++++++++++++++++ queries/cpp/textobjects.scm | 6 +++++ 2 files changed, 53 insertions(+) create mode 100644 queries/cpp/textobjects.scm diff --git a/queries/c/textobjects.scm b/queries/c/textobjects.scm index 7b59d5123..839169164 100644 --- a/queries/c/textobjects.scm +++ b/queries/c/textobjects.scm @@ -6,3 +6,50 @@ (function_definition body: (compound_statement) @function.inner) @function.outer + +(struct_specifier + body: (_) @class.inner) @class.outer + +; conditional +(if_statement + consequence: (_)? @conditional.inner + alternative: (_)? @conditional.inner + ) @conditional.outer + +(if_statement + condition: (_) @conditional.inner) + +; loops +(for_statement + (_)? @loop.inner) @loop.outer +(while_statement + (_)? @loop.inner) @loop.outer +(do_statement + (_)? @loop.inner) @loop.outer + + +(compound_statement) @block.outer +(comment) @comment.outer + +(call_expression) @call.outer +(call_expression (_) @call.inner) + +; Statements + +;(expression_statement ;; this is what we actually want to capture in most cases (";" is missing) probaly + ;(_) @statement.inner) ;; the otther statement like node type is declaration but declaration has a ";" + +(compound_statement + (_) @statement.outer) + +(field_declaration_list + (_) @statement.outer) + +(preproc_if + (_) @statement.outer) + +(preproc_elif + (_) @statement.outer) + +(preproc_else + (_) @statement.outer) diff --git a/queries/cpp/textobjects.scm b/queries/cpp/textobjects.scm new file mode 100644 index 000000000..2a808047a --- /dev/null +++ b/queries/cpp/textobjects.scm @@ -0,0 +1,6 @@ + +(class_specifier + body: (_) @class.inner) @class.outer + +(for_range_loop + (_)? @loop.inner) @loop.outer