Comments (3)
Here's a config that works for Svelte if anyone needs it (you'll need to override the max_join_length
for the join
to work, assuming you have a lot of atomic css classes):
{
'Wansmer/treesj',
dependencies = { 'nvim-treesitter/nvim-treesitter' },
config = function()
local ts = require('vim.treesitter')
require('treesj').setup({
use_default_keymaps = false,
cursor_behavior = 'start',
max_join_length = 200,
langs = {
svelte = {
['quoted_attribute_value'] = {
both = {
enable = function(tsn)
return tsn:parent():type() == 'attribute'
end,
},
split = {
format_tree = function(tsj)
local str = tsj:child('attribute_value')
local words = vim.split(str:text(), ' ')
tsj:remove_child('attribute_value')
for i, word in ipairs(words) do
tsj:create_child({ text = word }, i + 1)
end
end,
},
join = {
format_tree = function(tsj)
local str = tsj:child('attribute_value')
local node_text = str:text()
tsj:remove_child('attribute_value')
tsj:create_child({ text = node_text }, 2)
end,
},
},
}
}
})
end,
},
from treesj.
Hi!
I'm not sure if that is a task to solving with TreeSJ (because tree-sitter recognize it just as string, without any children). But you can add something like this in your langs.javascript
section in require('treesj').setup({ ... })
:
local javascript = {
-- ...
['string'] = {
both = {
enable = function(tsn)
return tsn:parent():type() == 'jsx_attribute'
end,
},
split = {
format_tree = function(tsj)
local str = tsj:child('string_fragment')
local words = vim.split(str:text(), ' ')
tsj:remove_child('string_fragment')
for i, word in ipairs(words) do
tsj:create_child({ text = word }, i + 1)
end
end,
},
},
-- ...
}
(I'm not sure what is a valid string for jsx)
2023-03-17.16.16.13.mov
from treesj.
This is exactly what i needed 😄. Works perfectly. Thank you!
from treesj.
Related Issues (20)
- Allow fallback when no node is found HOT 2
- Adds semicolon at the end of function declarations in Rust
- [BUG] Incorrect behaviour for toggling Ruby blocks HOT 2
- Join adds unnecessary space for empty Lua table HOT 1
- Join adds unnecessary commas and spaces, in Python HOT 2
- [Feature Request]: Toggle between <a></a> and <a /> (if tag is empty) in HTML/JSX etc. HOT 1
- Paranthesized expression support for Rust HOT 1
- Fix tests that fail
- module 'treesj' not found HOT 2
- FR: when on comment, just run `gqq` HOT 9
- Can only split/join/toggle once HOT 11
- Cant disable the preset keybindings. HOT 4
- Typescript: Split/Join some arrow functions results in invalid code HOT 1
- Error when Running Lua Config from README
- [TreeSJ]: Cannot join "table_constructor" containing node from one of this: { "commend" } HOT 3
- Allow ignoring the max join length for single calls HOT 1
- Fallback to `mini.splitjoin` HOT 2
- [golang] "The current node is already splitted" when attempting to split a multiline statement HOT 1
- JS/TS: split-join should support curly-less if statements HOT 2
- `dot_repeat` is not working for me
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from treesj.