Open Thisishemmit opened 3 months ago
Hm that's odd. Can you tell what file extension your plugin tries to communicate?
@svenstaro my file extension was .glsl
but after i added .frag
like .frag.glsl
it worked but highlighted some errors like:
uniform float time; ■ 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
I'm having the exact same issue exit code 0 and signal 6. Heres my lsp.log:
[START][2024-10-23 13:07:45] LSP logging initiated
[ERROR][2024-10-23 13:07:45] .../vim/lsp/rpc.lua:734 "rpc" "/Users/petercrady/.local/share/nvim/mason/bin/glslls" "stderr" "libc++abi: terminating due to uncaught exc
This happens when i:
nvim shader.glsl
If i try shader.frag or something else nothing happens. The lsp doesnt seem to even start up. Then if i do
nvim shader.frag.glsl
i get:
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); 'assign' : cannot convert from ' temp highp 4-component vector of float' to ' temp float'
fragColor = colors[gl_VertexIndex]; '[]' : scalar integer expression required
}
which is pretty weird
so with this:
EShLanguage find_language(const std::string& name)
{
// As well as the one used in glslang, there are a number of different conventions used for naming GLSL shaders.
// This function attempts to support the most common ones, by checking if the filename ends with one of a list of known extensions.
// If a ".glsl" extension is found initially, it is first removed to allow for e.g. vs.glsl/vert.glsl naming.
auto path = fs::path(name);
auto ext_path = path.extension();
if (ext_path == ".glsl")
ext_path = path.replace_extension();
const auto ext = ext_path.string();
if (ext.ends_with("vert") || ext.ends_with("vs") || ext.ends_with("vsh"))
return EShLangVertex;
else if (ext.ends_with("tesc"))
return EShLangTessControl;
else if (ext.ends_with("tese"))
return EShLangTessEvaluation;
else if (ext.ends_with("geom") || ext.ends_with("gs") || ext.ends_with("gsh"))
return EShLangGeometry;
else if (ext.ends_with("frag") || ext.ends_with("fs") || ext.ends_with("fsh"))
return EShLangFragment;
else if (ext.ends_with("comp"))
return EShLangCompute;
throw std::invalid_argument("Unknown file extension!");
}
if you name it something.vert.glsl it removes the glsl and then goes to something.vert but that doesn't explain why something.vert doesnt work
ok I figured it out. add this to init.lua
vim.filetype.add({
extension = {
vert = "glsl",
tesc = "glsl",
tese = "glsl",
frag = "glsl",
geom = "glsl",
comp = "glsl",
},
})
there is nothing wrong with glslls. vim isnt detecting the filetype correctly
I'm using glslls along with lsp_config.nvim and whenever I try to open glsl file in the editor this error show up:
The log line in lsp.log is:
And the glslls.lua of the lsp_config.nvim is: