Open madskjeldgaard opened 3 years ago
That's the least useful issue we've had in a while, could you at least try to fill in the forms and add valuable information into the issues ?
We can't do anything without context.
That's the least useful issue we've had in a while, could you at least try to fill in the forms and add valuable information into the issues ?
We can't do anything without context.
There are no forms for this repo and so nothing to fill out.
That said, I understand that a lack of context isn't helpful.
What would you like to know ?
I'm using tree-sitter version 0.20.0 On Manjaro Linux Nvim v.0.5.0 tree-sitter-nvim is at commit '460a26ef3218057a544b3fd6697e979e6bad648d' playground is at commit 'deb887b3f49d66654d9faa9778e8949fe0d80bc3'
To replicate:
Open a supercollider file, eg someting.scd
and run :PlaygroundToggle
. Nothing happens.
Then run :tabnew otherfile.py
to open a python file and then :PlaygroundToggle
and then it opens for that buffer correctly.
Are you sure the supercollider
filetype is on for the file you are trying to open ?
Are you sure the
supercollider
filetype is on for the file you are trying to open ?
yes. The strange thing is it used to work fine but all of a sudden it stopped, which is why I was curious if anything changed that would disable it by default or something for supercollider?
I tried going back to an earlier version (commit 1bf0f79cb461b11196cc9f419763be3373db2848) but that didn't help, so maybe it isn't something in this plugin that changed after all. Any ideas what it could be?
I have absolutely no idea, what does checkhealth
report ?
Seems alright:
health#nvim_treesitter#check
========================================================================
## Installation
- OK: `tree-sitter` found 0.20.0 (parser generator, only needed for :TSInstallFromGrammar)
- OK: `node` found v16.6.1 (only needed for :TSInstallFromGrammar)
- OK: `git` executable found.
- OK: `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl" }
- OK: Neovim was compiled with tree-sitter runtime ABI version 13 (required >=13). Parsers must be compatible with runtime ABI.
## Parser/Features H L F I J
- ocaml_interface✓ ✓ ✓ . ✓
- beancount ✓ . ✓ . .
- python ✓ ✓ ✓ ✓ ✓
- r ✓ ✓ . . .
- comment ✓ . . . .
- lua ✓ ✓ ✓ ✓ ✓
- ocaml ✓ ✓ ✓ . ✓
- go ✓ ✓ ✓ ✓ ✓
- scss ✓ . . ✓ .
- json ✓ ✓ ✓ ✓ .
- jsdoc ✓ . . . .
- ledger ✓ . ✓ ✓ ✓
- php ✓ ✓ ✓ ✓ ✓
- clojure ✓ ✓ ✓ . ✓
- supercollider ✓ ✓ ✓ ✓ ✓
- typescript ✓ ✓ ✓ ✓ ✓
- fennel ✓ ✓ . . ✓
- query ✓ ✓ ✓ ✓ ✓
- cpp ✓ ✓ ✓ ✓ ✓
- vue ✓ . ✓ . ✓
- latex ✓ . ✓ . ✓
- rst ✓ ✓ . . ✓
- css ✓ . ✓ ✓ ✓
- glimmer ✓ . . . .
- erlang . . . . .
- regex ✓ . . . .
- svelte ✓ . ✓ ✓ ✓
- c ✓ ✓ ✓ ✓ ✓
- fortran ✓ . ✓ ✓ .
- teal ✓ ✓ ✓ ✓ ✓
- java ✓ ✓ . ✓ ✓
- gomod ✓ . . . .
- dart ✓ ✓ . ✓ ✓
- verilog ✓ ✓ ✓ . ✓
- bash ✓ ✓ ✓ . ✓
- yaml ✓ ✓ ✓ ✓ ✓
- julia ✓ ✓ ✓ ✓ ✓
- turtle ✓ ✓ ✓ ✓ ✓
- cmake ✓ . ✓ . .
- html ✓ ✓ ✓ ✓ ✓
- zig ✓ . ✓ ✓ ✓
- bibtex ✓ . ✓ ✓ .
- tsx ✓ ✓ ✓ ✓ ✓
- yang ✓ . ✓ . .
- nix ✓ ✓ ✓ . ✓
- surface ✓ . ✓ ✓ ✓
- godotResource ✓ ✓ ✓ . .
- c_sharp ✓ ✓ ✓ . ✓
- commonlisp ✓ ✓ ✓ . .
- elixir ✓ ✓ ✓ ✓ ✓
- cuda ✓ ✓ ✓ ✓ ✓
- haskell ✓ . . . ✓
- ocamllex ✓ . . . ✓
- kotlin ✓ . . . ✓
- ruby ✓ ✓ ✓ ✓ ✓
- fish ✓ ✓ ✓ ✓ ✓
- devicetree ✓ ✓ ✓ ✓ ✓
- dockerfile ✓ . . . ✓
- rust ✓ ✓ ✓ ✓ ✓
- gdscript ✓ ✓ . . ✓
- toml ✓ ✓ ✓ ✓ ✓
- javascript ✓ ✓ ✓ ✓ ✓
- jsonc ✓ ✓ ✓ ✓ ✓
- graphql ✓ . . ✓ ✓
- ql ✓ ✓ . ✓ ✓
- sparql ✓ ✓ ✓ ✓ ✓
- hcl ✓ . ✓ ✓ ✓
Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
+) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang}
I really don't know then
@madskjeldgaard can you share the file you are using for testing?
Can reproduce.
Arch Linux neovim 0.5.0 nvim-treesitter @ f2076b267ef2d53c35a964a8752eef38d7040fd5 playground @ deb887b3f49d66654d9faa9778e8949fe0d80bc3
:checkhealth
:
health#nvim_treesitter#check
========================================================================
## Installation
- OK: `tree-sitter` found 0.20.0 (parser generator, only needed for :TSInstallFromGrammar)
- OK: `node` found v16.6.2 (only needed for :TSInstallFromGrammar)
- OK: `git` executable found.
- OK: `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl" }
- OK: Neovim was compiled with tree-sitter runtime ABI version 13 (required >=13). Parsers must be compatible with runtime ABI.
## Parser/Features H L F I J
- ocaml_interface✓ ✓ ✓ . ✓
- beancount ✓ . ✓ . .
- python ✓ ✓ ✓ ✓ ✓
- r ✓ ✓ . . .
- comment ✓ . . . .
- lua ✓ ✓ ✓ ✓ ✓
- ocaml ✓ ✓ ✓ . ✓
- go ✓ ✓ ✓ ✓ ✓
- scss ✓ . . ✓ .
- json ✓ ✓ ✓ ✓ .
- jsdoc ✓ . . . .
- ledger ✓ . ✓ ✓ ✓
- php ✓ ✓ ✓ ✓ ✓
- clojure ✓ ✓ ✓ . ✓
- supercollider ✓ ✓ ✓ ✓ ✓
- typescript ✓ ✓ ✓ ✓ ✓
- fennel ✓ ✓ . . ✓
- query ✓ ✓ ✓ ✓ ✓
- cpp ✓ ✓ ✓ ✓ ✓
- vue ✓ . ✓ . ✓
- latex ✓ . ✓ . ✓
- rst ✓ ✓ . . ✓
- css ✓ . ✓ ✓ ✓
- glimmer ✓ . . . .
- erlang . . . . .
- regex ✓ . . . .
- svelte ✓ . ✓ ✓ ✓
- c ✓ ✓ ✓ ✓ ✓
- teal ✓ ✓ ✓ ✓ ✓
- java ✓ ✓ . ✓ ✓
- gomod ✓ . . . .
- dart ✓ ✓ . ✓ ✓
- verilog ✓ ✓ ✓ . ✓
- bash ✓ ✓ ✓ . ✓
- yaml ✓ ✓ ✓ ✓ ✓
- julia ✓ ✓ ✓ ✓ ✓
- vim ✓ . . . ✓
- turtle ✓ ✓ ✓ ✓ ✓
- cmake ✓ . ✓ . .
- html ✓ ✓ ✓ ✓ ✓
- zig ✓ . ✓ ✓ ✓
- bibtex ✓ . ✓ ✓ .
- tsx ✓ ✓ ✓ ✓ ✓
- yang ✓ . ✓ . .
- nix ✓ ✓ ✓ . ✓
- surface ✓ . ✓ ✓ ✓
- godotResource ✓ ✓ ✓ . .
- c_sharp ✓ ✓ ✓ . ✓
- commonlisp ✓ ✓ ✓ . .
- elixir ✓ ✓ ✓ ✓ ✓
- cuda ✓ ✓ ✓ ✓ ✓
- ocamllex ✓ . . . ✓
- kotlin ✓ . . . ✓
- ruby ✓ ✓ ✓ ✓ ✓
- fish ✓ ✓ ✓ ✓ ✓
- devicetree ✓ ✓ ✓ ✓ ✓
- dockerfile ✓ . . . ✓
- rust ✓ ✓ ✓ ✓ ✓
- gdscript ✓ ✓ . . ✓
- toml ✓ ✓ ✓ ✓ ✓
- javascript ✓ ✓ ✓ ✓ ✓
- jsonc ✓ ✓ ✓ ✓ ✓
- graphql ✓ . . ✓ ✓
- ql ✓ ✓ . ✓ ✓
- sparql ✓ ✓ ✓ ✓ ✓
- hcl ✓ . ✓ ✓ ✓
Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
+) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang}
Here is a simple example:
yo.scd
:
(
a = 10;
)
Parses as
(source_file [0, 0] - [3, 0]
(code_block [0, 0] - [2, 1]
(variable_definition [1, 0] - [1, 6]
name: (variable [1, 0] - [1, 1]
(environment_var [1, 0] - [1, 1]
name: (identifier [1, 0] - [1, 1])))
value: (literal [1, 4] - [1, 6]
(number [1, 4] - [1, 6]
(integer [1, 4] - [1, 6]))))))
Using the cli tool tree-sitter parse yo.scd
.
The supercollider parser and nvim treesitter work fine otherwise. Code highlighting is correct, the parsing looks correct too behind the scenes, but there's just nothing happening when running playgrund
Debugging this a bit now. Seems like it is the split function that is failing and that it might be connected to the window? WTF?
if you uncomment this line: https://github.com/nvim-treesitter/playground/blob/787a7a8d4444e58467d6b3d4b88a497e7d494643/lua/nvim-treesitter-playground/internal.lua#L641
The split opens with the parsed node tree. But then, when you jump back to the main window (where the buffer of the file to be parsed is) it closes the Playground split automatically?
Here I am with the set window line uncommented, navigating the node tree and then jumping to the main buffer using C-w and then it disappears.
Ah and then if you also comment out this line: https://github.com/nvim-treesitter/playground/blob/master/lua/nvim-treesitter-playground/internal.lua#L765 It is fixed.
Can some of the devs with more knowledge of what's going on here clarify what the issue might be?
When I run the toggle playground command, this is the value of
bufnr: 1
current_window: 1000
M._entries[bufnr].display_bufnr: 2
in the .open() method
Something odd: the .detach()
method is called before opening the split when using .scd
files, but not for for example .cpp
files.
When opening TSPlaygroundToggle in a SuperCollider buffer M.attach is called, followed by M.detach followed by M.attach. This does not happen in .cpp.
I can also reproduce.
Arch Linux neovim 0.6.1 and 0.7.0 nvim-treesitter @ 783a54e305e06d1f5e239efb0baa4a3d91e9fbe7 playground @ 7dbcd4d647010a80d135804b3fc1da3fb77083d6
nvim-treesitter: require("nvim-treesitter.health").check()
========================================================================
## Installation
- OK: `tree-sitter` found 0.20.6 (parser generator, only needed for :TSInstallFromGrammar)
- OK: `node` found v17.8.0 (only needed for :TSInstallFromGrammar)
- OK: `git` executable found.
- OK: `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
Version: cc (GCC) 11.2.0
- OK: Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.
## Parser/Features H L F I J
..
...
... ...
- supercollider ✓ ✓ ✓ ✓ ✓
... ...
...
and when commenting out nvim-treesitter-playground/internal.lua#L765 as suggested by @madskjeldgaard and to sum it up doing this: https://github.com/madskjeldgaard/playground/commit/854afcf3d90b3f0b6bd6920392d29d2e378f638d
then :TSPlaygroundToggle
works as expected with the supercollider
filetype
So I bisected a bit and rolled back several times in the commit history of playground to see when I could get it to work. No luck. But I found something else which seems to be the real issue. As long as a buffer is called .scd or .sc (no matter if the file exist or not) then :TSPlaygroundToggle does absolutely nothing. BUT opening an empty buffer and setting the filetype to supercollider (very important that buffer is not named .scd / .sc) then playground works just fine.
Ah maybe this is about scnvim's filetype setting ?Get Outlook for Android
Aha! So a quick test with both nvim-tressiter and playground in "buddy/friends rollback"-mode. Now I'm at the latest commit on both repos as of 22 March 2021. It was def not enough to just rollback on Playground. Because now :TSPlaygroundToggle
works with .scd / .sc files again. And I also just tested with the latest playground commit and a nvim-treesitter commit from 22 March. And there :TSPlaygroundToggle
also works. So it seems that this is not really a Playground issue it is a Nvim-TreeSitter issue.
Ah maybe this is about scnvim's filetype setting ?Get Outlook for Android
Maybe a combination, i remember we did some scnvim
filetype detect stuff recently.
I will never get Outlook :)~
Okay the jsonc
filetype detect fix: 9be9ebd (on nvim-treesitter) is breaking supercollider usage with :TSPlaygroundToggle
. So it definitely seems to be a filetype detect issue here.
https://github.com/nvim-treesitter/nvim-treesitter/commit/9be9ebda0ad5d5ffb880829ad3315ab7c55a2acc
And it seems the issue is how the scnvim
plugin is making filetype detection on .scd files.
I just tried disabling (removing) scnvim
from my setup. And now I can use :TSPlaygroundToggle
with .scd and .sc files, though the first is now detected as a scdoc file and the latter as a scala file. But setting the filetype to supercollider yields success.
So this is not a nvim-treesitter or playground issue but a scnvim issue. It seems [fingers crossed]. Next up is to try and figure out what we need to do in scnvim
to detect the filetypes properly (using the newer nvim filetype.lua) and still not reintroduce the issue of jumpy scala-supercollider behavior due to the standard "last one wins"-way of filetype detection, which just switches filetypes in order.
-- notes on using playground while having scnvim installed
-- 9be9ebd seems to break playground usage with sc filetype or at least trigger something which is broken in scnvims detect sys
commit = "74d1d58572a0e017aacb3fb66b43add9d208b86e", -- Jul 18, 2021 working
commit = "9be9ebda0ad5d5ffb880829ad3315ab7c55a2acc", -- Jul 18, 2021 not working
Yes without scnvim installed I can now use :TSPlaygroundToggle
again with .scd and .sc files on an up to date nvim-treesitter and playground. Here I mean use as in Playground toggles a split.
But I do get errors without the scnvim plugin installed when scala short form is detected and rules all. At least there is some buggy behavior in regard to the supercollider filetype and scala detection even without the scnvim plugin. Soo maybe this is something nvim-treesitter have to deal with, the the same way scnvim
had to deal with it? atleast vanilla nvim now detects a .sc file as scala
, but lets say the treesitter user wants to use the supercollider parser and changes filetype on the buffer, then we would want treesitter/playground to switch parser, yes. Note that this is something else than the .scd issue, which seems to be linked to the scnvim plugin filedetect extension (I'm looking into this).
The .sc scala "issue" is due to the addition of the scala short form detection which was added here: neovim/neovim@7a239a8
Okay this is easier to show by making a list consisting of setup and result.
*.scd
and *.sc
files.nvim test.scd
reported filetype is supercollider, insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
Nothing happens. No split is created. Nothing in :mess
nvim test.sc
reported filetype is supercollider, insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
Nothing happens. No split is created. Nothing in :mess
nvim
and do a :setfiletype supercollider
, insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
function_call [0, 0] - [0, 15]
receiver [0, 0] - [0, 7]
function_call [0, 0] - [0, 7]
class [0, 0] - [0, 4]
parameter_call_list [0, 5] - [0, 6]
argument_calls [0, 5] - [0, 6]
unnamed_argument [0, 5] - [0, 6]
literal [0, 5] - [0, 6]
symbol [0, 5] - [0, 6]
method_call [0, 7] - [0, 15]
name: method_name [0, 8] - [0, 12]
parameter_call_list [0, 13] - [0, 14]
argument_calls [0, 13] - [0, 14]
unnamed_argument [0, 13] - [0, 14]
literal [0, 13] - [0, 14]
number [0, 13] - [0, 14]
integer [0, 13] - [0, 14]
nvim test.scd
reported filetype is scdoc, do a :setfiletype supercollider
and insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
Split is created and reports
function_call [0, 0] - [0, 15]
receiver [0, 0] - [0, 7]
function_call [0, 0] - [0, 7]
class [0, 0] - [0, 4]
parameter_call_list [0, 5] - [0, 6]
argument_calls [0, 5] - [0, 6]
unnamed_argument [0, 5] - [0, 6]
literal [0, 5] - [0, 6]
symbol [0, 5] - [0, 6]
method_call [0, 7] - [0, 15]
name: method_name [0, 8] - [0, 12]
parameter_call_list [0, 13] - [0, 14]
argument_calls [0, 13] - [0, 14]
unnamed_argument [0, 13] - [0, 14]
literal [0, 13] - [0, 14]
number [0, 13] - [0, 14]
integer [0, 13] - [0, 14]
nvim test.sc
reported filetype is scala, do a :setfiletype supercollider
and insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
Split is created and reports
ERROR [0, 0] - [1, 0]
identifier [0, 0] - [0, 4]
ERROR [0, 5] - [0, 6]
identifier [0, 8] - [0, 12]
integer_literal [0, 13] - [0, 14]
But clear the buffer for content and insert object max
(scala code) results in
object_definition [0, 0] - [0, 10]
name: identifier [0, 7] - [0, 10]
So the filetype detected by treesitter is still scala? or at least it is still the scala parser which is loaded it seems.
nvim
and do a :setfiletype supercollider
, insert Ndef(\).mold(2)
into the buffer and do a :TSPlaygroundToggle
results in:
function_call [0, 0] - [0, 15]
receiver [0, 0] - [0, 7]
function_call [0, 0] - [0, 7]
class [0, 0] - [0, 4]
parameter_call_list [0, 5] - [0, 6]
argument_calls [0, 5] - [0, 6]
unnamed_argument [0, 5] - [0, 6]
literal [0, 5] - [0, 6]
symbol [0, 5] - [0, 6]
method_call [0, 7] - [0, 15]
name: method_name [0, 8] - [0, 12]
parameter_call_list [0, 13] - [0, 14]
argument_calls [0, 13] - [0, 14]
unnamed_argument [0, 13] - [0, 14]
literal [0, 13] - [0, 14]
number [0, 13] - [0, 14]
integer [0, 13] - [0, 14]
Looking into the new API with filetype.lua (in version 0.7.0). Then all of this may not even be a problem. Potential RIP hours :) Will report back at some point.
Hello
All of a sudden, playground stopped working for supercollider files. Did you disable supercollider somehow? In other languages like python it works fine. But running
:TSPlaygroundToggle
in a supercollider buffer (.scd
) no longer does anything