language.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package lsp
  2. import (
  3. "path/filepath"
  4. "strings"
  5. "github.com/sst/opencode/internal/lsp/protocol"
  6. )
  7. func DetectLanguageID(uri string) protocol.LanguageKind {
  8. ext := strings.ToLower(filepath.Ext(uri))
  9. switch ext {
  10. case ".abap":
  11. return protocol.LangABAP
  12. case ".bat":
  13. return protocol.LangWindowsBat
  14. case ".bib", ".bibtex":
  15. return protocol.LangBibTeX
  16. case ".clj":
  17. return protocol.LangClojure
  18. case ".coffee":
  19. return protocol.LangCoffeescript
  20. case ".c":
  21. return protocol.LangC
  22. case ".cpp", ".cxx", ".cc", ".c++":
  23. return protocol.LangCPP
  24. case ".cs":
  25. return protocol.LangCSharp
  26. case ".css":
  27. return protocol.LangCSS
  28. case ".d":
  29. return protocol.LangD
  30. case ".pas", ".pascal":
  31. return protocol.LangDelphi
  32. case ".diff", ".patch":
  33. return protocol.LangDiff
  34. case ".dart":
  35. return protocol.LangDart
  36. case ".dockerfile":
  37. return protocol.LangDockerfile
  38. case ".ex", ".exs":
  39. return protocol.LangElixir
  40. case ".erl", ".hrl":
  41. return protocol.LangErlang
  42. case ".fs", ".fsi", ".fsx", ".fsscript":
  43. return protocol.LangFSharp
  44. case ".gitcommit":
  45. return protocol.LangGitCommit
  46. case ".gitrebase":
  47. return protocol.LangGitRebase
  48. case ".go":
  49. return protocol.LangGo
  50. case ".groovy":
  51. return protocol.LangGroovy
  52. case ".hbs", ".handlebars":
  53. return protocol.LangHandlebars
  54. case ".hs":
  55. return protocol.LangHaskell
  56. case ".html", ".htm":
  57. return protocol.LangHTML
  58. case ".ini":
  59. return protocol.LangIni
  60. case ".java":
  61. return protocol.LangJava
  62. case ".js":
  63. return protocol.LangJavaScript
  64. case ".jsx":
  65. return protocol.LangJavaScriptReact
  66. case ".json":
  67. return protocol.LangJSON
  68. case ".tex", ".latex":
  69. return protocol.LangLaTeX
  70. case ".less":
  71. return protocol.LangLess
  72. case ".lua":
  73. return protocol.LangLua
  74. case ".makefile", "makefile":
  75. return protocol.LangMakefile
  76. case ".md", ".markdown":
  77. return protocol.LangMarkdown
  78. case ".m":
  79. return protocol.LangObjectiveC
  80. case ".mm":
  81. return protocol.LangObjectiveCPP
  82. case ".pl":
  83. return protocol.LangPerl
  84. case ".pm":
  85. return protocol.LangPerl6
  86. case ".php":
  87. return protocol.LangPHP
  88. case ".ps1", ".psm1":
  89. return protocol.LangPowershell
  90. case ".pug", ".jade":
  91. return protocol.LangPug
  92. case ".py":
  93. return protocol.LangPython
  94. case ".r":
  95. return protocol.LangR
  96. case ".cshtml", ".razor":
  97. return protocol.LangRazor
  98. case ".rb":
  99. return protocol.LangRuby
  100. case ".rs":
  101. return protocol.LangRust
  102. case ".scss":
  103. return protocol.LangSCSS
  104. case ".sass":
  105. return protocol.LangSASS
  106. case ".scala":
  107. return protocol.LangScala
  108. case ".shader":
  109. return protocol.LangShaderLab
  110. case ".sh", ".bash", ".zsh", ".ksh":
  111. return protocol.LangShellScript
  112. case ".sql":
  113. return protocol.LangSQL
  114. case ".swift":
  115. return protocol.LangSwift
  116. case ".ts":
  117. return protocol.LangTypeScript
  118. case ".tsx":
  119. return protocol.LangTypeScriptReact
  120. case ".xml":
  121. return protocol.LangXML
  122. case ".xsl":
  123. return protocol.LangXSL
  124. case ".yaml", ".yml":
  125. return protocol.LangYAML
  126. default:
  127. return protocol.LanguageKind("") // Unknown language
  128. }
  129. }