mirror of
https://github.com/Myzel394/config-lsp.git
synced 2025-06-19 07:25:27 +02:00
feat: Improvements; Add wireguard
This commit is contained in:
parent
ffe1451526
commit
eab2d8ad29
@ -25,6 +25,7 @@ func SetUpRootHandler() {
|
||||
TextDocumentDidChange: TextDocumentDidChange,
|
||||
TextDocumentCompletion: TextDocumentCompletion,
|
||||
TextDocumentHover: TextDocumentHover,
|
||||
TextDocumentDidClose: TextDocumentDidClose,
|
||||
}
|
||||
|
||||
server := server.NewServer(&lspHandler, lsName, false)
|
||||
|
@ -15,11 +15,13 @@ type SupportedLanguage string
|
||||
const (
|
||||
LanguageSSHDConfig SupportedLanguage = "sshd_config"
|
||||
LanguageFstab SupportedLanguage = "fstab"
|
||||
LanguageWireguard SupportedLanguage = "languagewireguard"
|
||||
)
|
||||
|
||||
var AllSupportedLanguages = []string{
|
||||
string(LanguageSSHDConfig),
|
||||
string(LanguageFstab),
|
||||
string(LanguageWireguard),
|
||||
}
|
||||
|
||||
type FatalFileNotReadableError struct {
|
||||
@ -53,9 +55,14 @@ var valueToLanguageMap = map[string]SupportedLanguage{
|
||||
|
||||
"fstab": LanguageFstab,
|
||||
"etc/fstab": LanguageFstab,
|
||||
|
||||
"wireguard": LanguageWireguard,
|
||||
"wg": LanguageWireguard,
|
||||
"languagewireguard": LanguageWireguard,
|
||||
}
|
||||
|
||||
var typeOverwriteRegex = regexp.MustCompile(`^#\?\s*lsp\.language\s*=\s*(\w+)\s*$`)
|
||||
var wireguardPattern = regexp.MustCompile(`/wg\d+\.conf$`)
|
||||
|
||||
func DetectLanguage(
|
||||
content string,
|
||||
@ -94,6 +101,10 @@ func DetectLanguage(
|
||||
return LanguageFstab, nil
|
||||
}
|
||||
|
||||
if strings.HasPrefix(uri, "file:///etc/wireguard/") || wireguardPattern.MatchString(uri) {
|
||||
return LanguageWireguard, nil
|
||||
}
|
||||
|
||||
return "", common.ParseError{
|
||||
Line: 0,
|
||||
Err: LanguageUndetectableError{},
|
||||
|
5
root-handler/shared.go
Normal file
5
root-handler/shared.go
Normal file
@ -0,0 +1,5 @@
|
||||
package roothandler
|
||||
|
||||
import protocol "github.com/tliron/glsp/protocol_3_16"
|
||||
|
||||
var openedFiles = make(map[protocol.DocumentUri]struct{})
|
@ -2,6 +2,7 @@ package roothandler
|
||||
|
||||
import (
|
||||
"config-lsp/handlers/fstab"
|
||||
"config-lsp/handlers/wireguard"
|
||||
|
||||
"github.com/tliron/glsp"
|
||||
protocol "github.com/tliron/glsp/protocol_3_16"
|
||||
@ -15,6 +16,8 @@ func TextDocumentCompletion(context *glsp.Context, params *protocol.CompletionPa
|
||||
return fstab.TextDocumentCompletion(context, params)
|
||||
case LanguageSSHDConfig:
|
||||
return nil, nil
|
||||
case LanguageWireguard:
|
||||
return wireguard.TextDocumentCompletion(context, params)
|
||||
}
|
||||
|
||||
panic("root-handler/TextDocumentCompletion: unexpected language" + language)
|
||||
|
@ -2,6 +2,7 @@ package roothandler
|
||||
|
||||
import (
|
||||
"config-lsp/handlers/fstab"
|
||||
"config-lsp/handlers/wireguard"
|
||||
|
||||
"github.com/tliron/glsp"
|
||||
protocol "github.com/tliron/glsp/protocol_3_16"
|
||||
@ -15,6 +16,8 @@ func TextDocumentDidChange(context *glsp.Context, params *protocol.DidChangeText
|
||||
return fstab.TextDocumentDidChange(context, params)
|
||||
case LanguageSSHDConfig:
|
||||
return nil
|
||||
case LanguageWireguard:
|
||||
return wireguard.TextDocumentDidChange(context, params)
|
||||
}
|
||||
|
||||
panic("root-handler/TextDocumentDidChange: unexpected language" + language)
|
||||
|
25
root-handler/text-document-did-close.go
Normal file
25
root-handler/text-document-did-close.go
Normal file
@ -0,0 +1,25 @@
|
||||
package roothandler
|
||||
|
||||
import (
|
||||
"config-lsp/handlers/wireguard"
|
||||
|
||||
"github.com/tliron/glsp"
|
||||
protocol "github.com/tliron/glsp/protocol_3_16"
|
||||
)
|
||||
|
||||
func TextDocumentDidClose(context *glsp.Context, params *protocol.DidCloseTextDocumentParams) error {
|
||||
language := rootHandler.GetLanguageForDocument(params.TextDocument.URI)
|
||||
|
||||
delete(openedFiles, params.TextDocument.URI)
|
||||
rootHandler.RemoveDocument(params.TextDocument.URI)
|
||||
|
||||
switch language {
|
||||
case LanguageFstab:
|
||||
case LanguageSSHDConfig:
|
||||
case LanguageWireguard:
|
||||
return wireguard.TextDocumentDidClose(context, params)
|
||||
default:
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -3,6 +3,7 @@ package roothandler
|
||||
import (
|
||||
"config-lsp/common"
|
||||
fstab "config-lsp/handlers/fstab"
|
||||
"config-lsp/handlers/wireguard"
|
||||
"fmt"
|
||||
|
||||
"github.com/tliron/glsp"
|
||||
@ -27,6 +28,8 @@ func TextDocumentDidOpen(context *glsp.Context, params *protocol.DidOpenTextDocu
|
||||
return parseError.Err
|
||||
}
|
||||
|
||||
openedFiles[params.TextDocument.URI] = struct{}{}
|
||||
|
||||
// Everything okay, now we can handle the file
|
||||
rootHandler.AddDocument(params.TextDocument.URI, language)
|
||||
|
||||
@ -34,11 +37,12 @@ func TextDocumentDidOpen(context *glsp.Context, params *protocol.DidOpenTextDocu
|
||||
case LanguageFstab:
|
||||
return fstab.TextDocumentDidOpen(context, params)
|
||||
case LanguageSSHDConfig:
|
||||
default:
|
||||
panic(fmt.Sprintf("unexpected roothandler.SupportedLanguage: %#v", language))
|
||||
break
|
||||
case LanguageWireguard:
|
||||
return wireguard.TextDocumentDidOpen(context, params)
|
||||
}
|
||||
|
||||
return nil
|
||||
panic(fmt.Sprintf("unexpected roothandler.SupportedLanguage: %#v", language))
|
||||
}
|
||||
|
||||
func showParseError(
|
||||
|
@ -29,6 +29,26 @@ func Map[T any, O any](values []T, f func(T) O) []O {
|
||||
return result
|
||||
}
|
||||
|
||||
func MapMap[T comparable, O any, P any](values map[T]O, f func(T, O) P) map[T]P {
|
||||
result := make(map[T]P)
|
||||
|
||||
for key, value := range values {
|
||||
result[key] = f(key, value)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func MapMapToSlice[T comparable, O any, P any](values map[T]O, f func(T, O) P) []P {
|
||||
result := make([]P, 0)
|
||||
|
||||
for key, value := range values {
|
||||
result = append(result, f(key, value))
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func SliceToSet[T comparable](values []T) map[T]struct{} {
|
||||
set := make(map[T]struct{})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user