content: language = "GLSL"
  extensions = ["glsl", "glslv", "glslf"]
  line-comment = "//"
  multiline-comment-start = "/*"
  multiline-comment-end = "*/"
  keywords = [
      "attribute", "break", "bvec2", "bvec3", "bvec4", "centroid", "continue",
      "discard", "dmat2", "dmat2x2", "dmat2x3", "dmat2x4", "dmat3", "dmat3x2",
      "dmat3x3", "dmat3x4", "dmat4", "dmat4x2", "dmat4x3", "dmat4x4", "dvec2",
      "dvec3", "dvec4", "else", "flat", "float", "highp", "if", "in", "inout",
      "int", "invariant", "isampler1D", "isampler1DArray", "isampler2D",
      "isampler2DArray", "isampler2DMS", "isampler2DMSArray", "isampler2DRect",
      "isampler3D", "isamplerBuffer", "isamplerCube", "isamplerCubeArray",
      "ivec2", "ivec3", "ivec4", "layout", "lowp", "mat2", "mat2x2", "mat2x3",
      "mat2x4", "mat3", "mat3x2", "mat3x3", "mat3x4", "mat4", "mat4x2", "mat4x3",
      "mat4x4", "mediump", "noperspective", "out", "patch", "precision", "return",
      "sample", "sampler1D", "sampler1DArray", "sampler1DArrayShadow",
      "sampler1DShadow", "sampler2D", "sampler2DArray", "sampler2DArrayShadow",
      "sampler2DMS", "sampler2DMSArray", "sampler2DRect", "sampler2DRectShadow",
      "sampler2DShadow", "sampler3D", "samplerBuffer", "samplerCube",
      "samplerCubeArray", "samplerCubeArrayShadow", "samplerCubeShadow", "smooth",
      "subroutine", "uniform", "usampler1D", "usampler1DArray", "usampler2D",
      "usampler2DArray", "usampler2DMS", "usampler2DMSArray", "usampler2DRect",
      "usampler3D", "usamplerBuffer", "usamplerCube", "usamplerCubeArray",
      "uvec2", "uvec3", "uvec4", "varying", "vec2", "vec3", "vec4", "void",
      "while",
  ]
  
  