| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package lsp
- import (
- "path/filepath"
- "strings"
- "github.com/sst/opencode/internal/lsp/protocol"
- )
- func DetectLanguageID(uri string) protocol.LanguageKind {
- ext := strings.ToLower(filepath.Ext(uri))
- switch ext {
- case ".abap":
- return protocol.LangABAP
- case ".bat":
- return protocol.LangWindowsBat
- case ".bib", ".bibtex":
- return protocol.LangBibTeX
- case ".clj":
- return protocol.LangClojure
- case ".coffee":
- return protocol.LangCoffeescript
- case ".c":
- return protocol.LangC
- case ".cpp", ".cxx", ".cc", ".c++":
- return protocol.LangCPP
- case ".cs":
- return protocol.LangCSharp
- case ".css":
- return protocol.LangCSS
- case ".d":
- return protocol.LangD
- case ".pas", ".pascal":
- return protocol.LangDelphi
- case ".diff", ".patch":
- return protocol.LangDiff
- case ".dart":
- return protocol.LangDart
- case ".dockerfile":
- return protocol.LangDockerfile
- case ".ex", ".exs":
- return protocol.LangElixir
- case ".erl", ".hrl":
- return protocol.LangErlang
- case ".fs", ".fsi", ".fsx", ".fsscript":
- return protocol.LangFSharp
- case ".gitcommit":
- return protocol.LangGitCommit
- case ".gitrebase":
- return protocol.LangGitRebase
- case ".go":
- return protocol.LangGo
- case ".groovy":
- return protocol.LangGroovy
- case ".hbs", ".handlebars":
- return protocol.LangHandlebars
- case ".hs":
- return protocol.LangHaskell
- case ".html", ".htm":
- return protocol.LangHTML
- case ".ini":
- return protocol.LangIni
- case ".java":
- return protocol.LangJava
- case ".js":
- return protocol.LangJavaScript
- case ".jsx":
- return protocol.LangJavaScriptReact
- case ".json":
- return protocol.LangJSON
- case ".tex", ".latex":
- return protocol.LangLaTeX
- case ".less":
- return protocol.LangLess
- case ".lua":
- return protocol.LangLua
- case ".makefile", "makefile":
- return protocol.LangMakefile
- case ".md", ".markdown":
- return protocol.LangMarkdown
- case ".m":
- return protocol.LangObjectiveC
- case ".mm":
- return protocol.LangObjectiveCPP
- case ".pl":
- return protocol.LangPerl
- case ".pm":
- return protocol.LangPerl6
- case ".php":
- return protocol.LangPHP
- case ".ps1", ".psm1":
- return protocol.LangPowershell
- case ".pug", ".jade":
- return protocol.LangPug
- case ".py":
- return protocol.LangPython
- case ".r":
- return protocol.LangR
- case ".cshtml", ".razor":
- return protocol.LangRazor
- case ".rb":
- return protocol.LangRuby
- case ".rs":
- return protocol.LangRust
- case ".scss":
- return protocol.LangSCSS
- case ".sass":
- return protocol.LangSASS
- case ".scala":
- return protocol.LangScala
- case ".shader":
- return protocol.LangShaderLab
- case ".sh", ".bash", ".zsh", ".ksh":
- return protocol.LangShellScript
- case ".sql":
- return protocol.LangSQL
- case ".swift":
- return protocol.LangSwift
- case ".ts":
- return protocol.LangTypeScript
- case ".tsx":
- return protocol.LangTypeScriptReact
- case ".xml":
- return protocol.LangXML
- case ".xsl":
- return protocol.LangXSL
- case ".yaml", ".yml":
- return protocol.LangYAML
- default:
- return protocol.LanguageKind("") // Unknown language
- }
- }
|