georgewfraser / vscode-tree-sitter

Accurate syntax coloring for VSCode using tree-sitter
MIT License
175 stars 25 forks source link

[BUG] Not building correctly for Windows and Linux #3

Closed olvyko closed 5 years ago

olvyko commented 5 years ago

When I installed this extension, almost all colors are no longer displayed. Tested with C++ and Rust code.

Before: tree-sitter-off

After: tree-sitter-on

georgewfraser commented 5 years ago

Would you please download the latest version (0.1.4), open the dev tools in VSCode, and show me what appears in your console?

olvyko commented 5 years ago

Yeah, had some errors and warnings

tree-sitter-errors

georgewfraser commented 5 years ago

Hmmm, it seems I am not correctly building for Windows, so right now it only works on Mac. There's some information here and here.

Alternatively I could switch to tree-sitter WASM: https://github.com/tree-sitter/tree-sitter/tree/master/lib/binding_web

mmstick commented 5 years ago

Getting issues on Linux as well


workbench.main.js:238 [Extension Host] Here is the error stack:  Error: /home/mmstick/.vscode/extensions/georgewfraser.vscode-tree-sitter-0.1.4/node_modules/tree-sitter/build/Release/tree_sitter_runtime_binding.node: invalid ELF header
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:166:20)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:740:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:166:20)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
    at Function.Module._load (internal/modules/cjs/loader.js:551:3)
    at Function.define._installInterceptor.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:480:42)
    at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:743:482)
    at Function.t.getExtensionPathIndex.then.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:669:176)
    at Module.require (internal/modules/cjs/loader.js:658:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/mmstick/.vscode/extensions/georgewfraser.vscode-tree-sitter-0.1.4/node_modules/tree-sitter/index.js:3:13)
    at Object.<anonymous> (/home/mmstick/.vscode/extensions/georgewfraser.vscode-tree-sitter-0.1.4/node_modules/tree-sitter/index.js:497:3)
    at Module._compile (internal/modules/cjs/loader.js:711:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:722:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
    at Function.Module._load (internal/modules/cjs/loader.js:551:3)
    at Function.define._installInterceptor.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:480:42)
    at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:743:482)
    at Function.t.getExtensionPathIndex.then.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:669:176)
    at Module.require (internal/modules/cjs/loader.js:658:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/mmstick/.vscode/extensions/georgewfraser.vscode-tree-sitter-0.1.4/out/extension.js:4:16)
    at Object.<anonymous> (/home/mmstick/.vscode/extensions/georgewfraser.vscode-tree-sitter-0.1.4/out/extension.js:178:3)
    at Module._compile (internal/modules/cjs/loader.js:711:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:722:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
    at Function.Module._load (internal/modules/cjs/loader.js:551:3)
    at Function.define._installInterceptor.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:480:42)
    at Function.t._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:743:482)
    at Function.t.getExtensionPathIndex.then.i._load (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:669:176)
    at Module.require (internal/modules/cjs/loader.js:658:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Function.i [as __$__nodeRequire] (/usr/share/code/resources/app/out/vs/loader.js:31:542)
    at /usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:730:450
    at k._doActivateExtension (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:730:558)
    at k._activateExtension (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:729:404)
    at k.<anonymous> (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:726:330)
    at Generator.next (<anonymous>)
    at n (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:13:388)
    at new Promise (<anonymous>)
    at n (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:13:165)
    at Object.actualActivateExtension (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:726:32)
    at p._activateExtension (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:468:561)
    at define._activateExtensions.r.length.Promise.all.o.map.e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:468:245)
    at Array.map (<anonymous>)
    at p._activateExtensions (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:468:233)
    at p.activateByEvent (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:466:126)
    at k._activateByEvent (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:728:69)
    at define.$activateByEvent._readyToRunExtensions.wait.then.t (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:736:221)
georgewfraser commented 5 years ago

I think I have the build working correctly for windows and linux, but I can't distribute 3 different builds of the extension until https://github.com/microsoft/vscode/issues/23251 is finished (which will apparently be June). In the meantime, you can download the appropriate .vsix file from here:

https://github.com/georgewfraser/vscode-tree-sitter/releases/tag/latest

and install manually:

Screen Shot 2019-05-20 at 10 13 00 PM
mmstick commented 5 years ago

Thanks. That seems to work. Sadly, still not as good as the syntax highlighting in Atom, though it's a lot better than before.

georgewfraser commented 5 years ago

@mmstick This is just the first version! It's easy to tweak the colorization rules, and contributions are encouraged: https://github.com/georgewfraser/vscode-tree-sitter#fixing-colorization-of-an-existing-language

jeff-hykin commented 5 years ago

I think Tree Sitter WASM would be ideal. I was going to open up a PR but I can't get the extension to run locally due to build issues.

I'm on a mac running High Sierra, and the extension works without manually installing .vsix, but building it locally gets the following error

'/Users/jeffhykin/Nextcloud/Programming/tree-sitter/node_modules/tree-sitter/build/Release/tree_sitter_runtime_binding.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 57. This version of Node.js requires NODE_MODULE_VERSION 64. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`)..

I've rebuild and reinstalled the tree-sitter package, nuked node_modules/ and reinstalled everything with a clean cache and tried electron-rebuild but no luck.

razzeee commented 5 years ago

@georgewfraser this approach might be helpful? https://github.com/elm-tooling/elm-language-server/blob/master/server/src/util/rebuilder.ts

georgewfraser commented 5 years ago

This has been fixed by switching to WASM. Thanks @jeff-hykin for showing how it's done!