Compare commits

...

3 Commits

Author SHA1 Message Date
Dmitriy Pleshevskiy 435eddcf32
queries: add folds
Closes #6
2023-06-16 18:37:15 +03:00
Dmitriy Pleshevskiy 3db7cfa22d
queries: add simple indents
Closes #7
2023-06-16 18:36:06 +03:00
Dmitriy Pleshevskiy 7a7c699be2
scanner: skip whitespace before check block comment 2023-06-16 18:32:09 +03:00
5 changed files with 54 additions and 15 deletions

View File

@ -38,6 +38,16 @@ let
},
})
-- Fold level
vim.opt.foldlevel = 99
vim.opt.foldlevelstart = 99
vim.opt.foldminlines = 1
vim.opt.foldnestmax = 5
vim.opt.foldmethod = "expr"
vim.cmd([[
set foldexpr=nvim_treesitter#foldexpr()
]])
vim.g.catppuccin_flavour = "frappe"
require("catppuccin").setup()
vim.cmd([[colorscheme catppuccin]])

5
queries/folds.scm Normal file
View File

@ -0,0 +1,5 @@
[
(block)
(class_block)
(text_block)
] @fold

15
queries/indents.scm Normal file
View File

@ -0,0 +1,15 @@
[
(block)
(class_block)
] @indent.begin
[
"}"
"]"
] @indent.branch
[
(line_comment)
(block_comment)
(ERROR)
] @indent.auto

6
queries/locals.scm Normal file
View File

@ -0,0 +1,6 @@
; Scope
[
(block)
(class_block)
(text_block)
] @scope

View File

@ -54,19 +54,25 @@ namespace {
lexer->advance(lexer, true);
}
void skip_whitespaces(TSLexer *lexer) {
while (lexer->lookahead != 0 && iswspace(lexer->lookahead)) {
skip(lexer);
}
}
bool is_text_block_end(TSLexer *lexer) {
vector<int16_t>::reverse_iterator
iter = escape_char_stack.rbegin(),
end = escape_char_stack.rend();
vector<int16_t>::reverse_iterator
iter = escape_char_stack.rbegin(),
end = escape_char_stack.rend();
for (; iter != end; ++iter) {
if (lexer->lookahead != *iter) {
return false;
}
advance(lexer);
for (; iter != end; ++iter) {
if (lexer->lookahead != *iter) {
return false;
}
advance(lexer);
}
return true;
return true;
}
bool is_triple_double_quote(TSLexer *lexer) {
@ -85,9 +91,7 @@ namespace {
lexer->result_symbol = TEXT_BLOCK_START;
lexer->mark_end(lexer);
while (lexer->lookahead != 0 && iswspace(lexer->lookahead)) {
skip(lexer);
}
skip_whitespaces(lexer);
if (lexer->lookahead != '|') {
return false;
@ -114,9 +118,7 @@ namespace {
lexer->result_symbol = TEXT_BLOCK_END;
lexer->mark_end(lexer);
while (lexer->lookahead != 0 && iswspace(lexer->lookahead)) {
skip(lexer);
}
skip_whitespaces(lexer);
if (is_text_block_end(lexer)) {
lexer->mark_end(lexer);
@ -137,6 +139,7 @@ namespace {
lexer->result_symbol = BLOCK_COMMENT;
lexer->mark_end(lexer);
skip_whitespaces(lexer);
// Check start of block comment
if (!is_triple_double_quote(lexer)) {
return false;