ScriptEditorService

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst
Nicht repliziert

Dieser Service wird verwendet, um mit ScriptDocument Instanzen zu interagieren.

Zusammenfassung

Methoden

Ereignisse

Eigenschaften

Methoden

DeregisterAutocompleteCallback

()
Plugin-Sicherheit

Entfernt einen zuvor registrierten Rückruf mit dem Namen name.

Parameter

name: string
Standardwert: ""

Rückgaben

()

Code-Beispiele

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

()
Plugin-Sicherheit

Entfernt einen zuvor registrierten Rückruf mit dem Namen name.

Parameter

name: string
Standardwert: ""

Rückgaben

()

Code-Beispiele

ScriptEditorService:DeregisterScriptAnalysisCallback

local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:DeregisterScriptAnalysisCallback("foo")

FindScriptDocument

Plugin-Sicherheit

Gibt die geöffnete ScriptDocument entsprechend der angegebenen LuaSourceContainer oder nil zurück, wenn das angegebene Skript nicht geöffnet ist.

Parameter

Standardwert: ""

Rückgaben

Code-Beispiele

ScriptDocument:CloseAsync

ScriptDocument:CloseAsync

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Find the first open script document
for _, document in documents do
-- The Command Bar can't be closed, so don't select it
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Closed {scriptDocument.Name}`)
else
warn(`Failed to close {scriptDocument.Name} because: {err}`)
end
else
print("No open scripts")
end

Demonstrates using ScriptDocument.ViewportChanged to print the start and end line of the script's viewport when it changes.

To run:

  1. Ensure Output view is open
  2. Run the below code in the Command Bar
  3. Scroll up and down in the opened Script window
Connecting to ScriptDocument.ViewportChanged

--!nocheck
--[[
To run:
1. Ensure Output view is open
2. Run the below code in the Command Bar
3. Scroll up and down in the opened Script window
Print statements from the ViewportChanged event will appear in the Output
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Create text that spans many lines
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Create a script containing the dummy text and open it
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Failed to open script because: {err}`)
return
end
-- Get a reference to the opened script
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Script Viewport Changed - startLine: {startLine}, endLine: {endLine}`)
end
-- Connect the ViewportChanged event to the function above that prints the start and end line of the updated viewport
scriptDocument.ViewportChanged:Connect(onViewportChanged)

GetEditorSource

Plugin-Sicherheit

Gibt die Bearbeitungszeitquelle für das angegebene Skript, das. PL: die Skriptszurück.

Wenn das Skript im Skript-Editor geöffnet ist, gibt diese Methode den Text zurück, der derzeit im Editor angezeigt wird.Wenn das Skript nicht im Editor geöffnet ist, gibt die Methode den Text zurück, den der Editor anzeigen würde, wenn er geöffnet wird.Die Bearbeitungszeitquelle ist nicht immer konsistent mit der EigenschaftenScript.Source.

Parameter

Standardwert: ""

Rückgaben

GetScriptDocuments

Instances
Plugin-Sicherheit

Gibt eine Liste der derzeit offenen Skriptdokumente zurück, einschließlich der Befehlsleiste.


Rückgaben

Instances

Code-Beispiele

Gets all script documents in the place with ScriptEditorService:GetScriptDocuments() and prints their names.

Print the name of every script

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local scriptDocuments = ScriptEditorService:GetScriptDocuments()
for _, scriptDocument in scriptDocuments do
-- Prints the name of each script
if not scriptDocument:IsCommandBar() then
print(scriptDocument.Name)
end
end

RegisterAutocompleteCallback

()
Plugin-Sicherheit

Registriert einen Autocomplete-Callback mit der Priorität .

Wenn der Skript-Editor Autovervollständigung aufruft, rufen alle registrierten Autovervollständigungsaufrufe in der Reihenfolge der steigenden Priorität mit der Autovervollständigungsanfrage und der Antwort auf.Mehrere Rückrufe können eine Priorität teilen, aber dann ist ihre Anrufreihenfolge unberechenbar.Jeder Rückruf sollte eine Antworttabelle mit demselben Format wie die Antworttabelleneingabe zurückgeben.Rückrufe sollten nicht zurückgeben.Der erste Rückruf, der aufgerufen wird, erhält die Antwort des internen Autovervollständigungs als seine Antworttabelle, und nachfolgende Rückrufe erhalten die Ausgabe des vorherigen Callbackals ihre Antworttabelle.Rückrufe können entweder den übergebenen Tisch modifizieren oder einen neuen Tisch desselben Formats zurückgeben.

Die callbackFunction muss den folgenden eingebenhaben: (Request: table, Response: table) -> table

Die Anforderungstabelle hat das folgende Format:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position ist die position des eindeutigen cursors, in der du automatisch ausgefüllt wirst.
  • textDocument.document ist die offene ScriptDocument , die du abschließt, wenn sie existiert.
  • textDocument.script ist das LuaSourceContainer, das du abschließt, wenn es existiert.

Wenn sowohl textDocument.document als auch textDocument.script vorhanden sind, entsprechen sie einander: req.textDocument.document:GetScript() == req.textDocument.script

Die Antworttabelle hat das folgende Format:


type Response = {
items: {
{
label: string, -- The label
kind: Enum.CompletionItemKind?,
tags: {Enum.CompletionItemTag}?,
detail: string?,
documentation: {
value: string,
}?,
overloads: number?,
learnMoreLink: string?,
codeSample: string?,
preselect: boolean?,
textEdit: {
newText: string,
insert: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
}?
}
}
}
  • Response.items ist ein Array der Vervollständigungsartikel. Die Reihenfolge dieses Arrays ist unbedeutend und es wird im Editor verwendet, wenn der Benutzer tippt.
  • Response.items[n].label ist das label des elements, das im autocomplete-menü angezeigt wird.
  • Response.items[n].kind gibt an, welche Art von Autocomplete-Artikel es ist.Hauptsächlich kontrolliert dies das Icon, das dem Element im Editor gegeben wird.Nicht alle Arten haben ein einzigartiges Icon.Wenn nicht spezifiziert, verwendet der Editor das "Text"-Symbol.Unterstützte Arten zeigen standardmäßig das "Eigenschaft"-Symbol an.
  • Response.items[n].tags gibt ein Array von Tags an, die dieses Artikelbeschreiben. Siehe die Enum.CompletionItemTag für Details über ihre Funktion.
  • Response.items[n].details gibt eine Zeichenfolge an, die Details über das Artikelbeschreibt.Für Standardartikel ist dies eine Zeichenrepräsentation ihres eingeben.Beachten Sie, dass, damit das Dokumentations-Widget angezeigt wird, documentation präsent sein muss, aber documentation.value leer sein kann.
  • Response.items[n].documentation gibt den hauptkörper der dokumentation in seinem value feld an. documentation ist vorhanden, auch wenn der wert leer ist, so dass das dokumentationsfenster angezeigt wird, wenn entweder details oder überlastungen angegeben werden.
  • Response.items[n].overloads gibt die anzahl der überlastungen einer funktion-autovervollständigung an.
  • Response.items[n].learnMoreLink Verweise auf eine relevante Seite auf den Creator-Dokumenten.Diese URL muss eine https Anfrage an erstellen.roblox.com sein; keine anderen URLs werden im Editor angezeigt.
  • Response.items[n].codeSample gibt eine probennutzung des artikelan. documentation muss nicht leer sein, um dieses feld anzuzeigen.
  • Response.items[n].preselect Wenn wahr, sortiert der Editor dieses Abschluss-Element vor allen anderen und wählt es standardmäßig für den Benutzer aus. Keine Wirkung, wenn falsch oder fehlend.
  • Response.items[n].textEdit Wenn vorhanden, akzeptiert die Annahme des Abschlusses diese Textbearbeitung - ins Einfügen oder Ersetzen des Spans zwischen den Positionen Anfang und Ende mit dem neuen Text.

Wenn ein Rückruf ein ungültiges Ergebnis zurückgibt oder einen Fehler auftreibt, lässt der Editor den modifizierten Antworttisch fallen und verwendet die integrierte Autovervollständigungs-Ergebnisliste.

Parameter

name: string
Standardwert: ""
priority: number
Standardwert: ""
callbackFunction: function
Standardwert: ""

Rückgaben

()

Code-Beispiele

ScriptEditorService:RegisterAutocompleteCallback ScriptEditorService:DeregisterAutocompleteCallback

ScriptEditorService:RegisterAutocompleteCallback ScriptEditorService:DeregisterAutocompleteCallback

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
type Request = {
position: {
line: number,
character: number,
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?,
},
}
type Response = {
items: {
{
label: string,
kind: Enum.CompletionItemKind?,
tags: { Enum.CompletionItemTag }?,
detail: string?,
documentation: {
value: string,
}?,
overloads: number?,
learnMoreLink: string?,
codeSample: string?,
preselect: boolean?,
textEdit: {
newText: string,
replace: {
start: { line: number, character: number },
["end"]: { line: number, character: number },
},
}?,
}
},
}
local autocompleteCallback = function(request: Request, response: Response): Response
local item = {
label = "foo",
preselect = true,
}
table.insert(response.items, item)
return response
end
ScriptEditorService:RegisterAutocompleteCallback("foo", 1, autocompleteCallback)
-- To deregister the callback, run the following code in the Command Bar
ScriptEditorService:DeregisterAutocompleteCallback("foo")

RegisterScriptAnalysisCallback

()
Plugin-Sicherheit

Registriert einen Skript-Analysen-Callback callbackFunction mit name namens priority .Wenn die Skriptanalyse in Studio ausgeführt wird, rufen alle registrierten Rückrufe in der Reihenfolge der steigenden Priorität an.Jeder Rückruf sollte eine Antworttabelle zurückgeben, die dem in der unten angegebenen Form entspricht.Rückrufe sollten nicht zurückgeben.

Die Anforderungstabelle hat das folgende Format, wo das ist, was analysiert werden soll.


type Request = {
script: LuaSourceContainer?
}

Die Antworttabelle hat das folgende Format, in dem diagnostics ein Array von Diagnosentabellen ist. Jede Diagnosentabelle hat die aufgelisteten Einträge.


type Response = {
diagnostics: {
{
range: {
start: {
line: number,
character: number,
},
["end"]: {
line: number,
character: number,
}
},
code: string?,
message: string,
severity: Enum.Severity?,
codeDescription: { href: string }?
}
}
}
  • range repräsentiert einen textbereich, der vom linter hervorgehoben werden sollte, indem er anzeigt, welche zeile/zeichen mit der markierung beginnen soll und welche zeile/zeichen mit der markierung aufhören soll.
  • code ist ein label für die nachricht.
  • message ist eine Warnmeldung, die für die Zeile angezeigt wird.Dies wird auch in einem Tooltip angezeigt, wenn der Benutzer den Cursor über die Zeile im Skript-Editor bewegt.
  • severity ist ein Enum.Severity Wert für die Diagnostik.Dies bestimmt, wie die Diagnose in dem Skript-Analyswerkzeug in Studio kategorisiert wird, sowie wie Text im Skript-Editor hervorgehoben wird.
  • codeDescription Links zu einer relevanten Seite auf den Creator-Dokumenten. Diese URL muss eine https Anfrage an create.roblox.com sein; keine anderen URLs werden im Editor angezeigt.

Parameter

name: string
Standardwert: ""
priority: number
Standardwert: ""
callbackFunction: function
Standardwert: ""

Rückgaben

()

Code-Beispiele

ScriptEditorService:RegisterScriptAnalysisCallback

type Request = {
["script"]: LuaSourceContainer,
}
type Response = {
diagnostics: {
{
range: {
start: {
line: number,
character: number,
},
["end"]: {
line: number,
character: number,
},
},
code: string?,
message: string,
severity: Enum.Severity?,
codeDescription: { href: string }?,
}
},
}
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService:RegisterScriptAnalysisCallback("foo", 1, function(Req: Request): Response
local response = {
diagnostics = {},
}
local lineNo = 1
-- Iterate line by line
for text, newline in Req.script.Source:gmatch("([^\r\n]*)([\r\n]*)") do
local startIndex, endIndex = string.find(text, "Foo")
if startIndex and endIndex then
table.insert(response.diagnostics, {
range = {
["start"] = {
line = lineNo,
character = startIndex,
},
["end"] = {
line = lineNo,
character = endIndex,
},
},
code = "FooFinder",
message = "Foo found here!",
severity = Enum.Severity.Warning,
})
end
lineNo = lineNo + #newline:gsub("\n+", "\0%0\0"):gsub(".%z.", "."):gsub("%z", "")
end
return response
end)

OpenScriptDocumentAsync

Angehalten
Plugin-Sicherheit

Anfragen, dass ein Skript-Editor das angegebene Skript, das. PL: die Skriptsöffnet.Rückgabe (true, nil), wenn die Anfrage erfolgreich ist.Gibt Rückgaben (false, String) zurück, wenn die Anfrage fehlschlägt, mit einem String, der das Problem beschreibt.

Wenn das Skript bereits geöffnet ist, gelingt diese Funktion und wechselt die Registerkarten zum zugeordneten Editor.

Parameter

Standardwert: ""

Rückgaben

Code-Beispiele

ScriptEditorService:OpenScriptDocumentAsync

ScriptEditorService:OpenScriptDocumentAsync

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local Workspace = game:GetService("Workspace")
local newScript = Instance.new("Script")
newScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(newScript)
if success then
print("Opened script document")
else
print(`Failed to open script document: {err}`)
end

UpdateSourceAsync

()
Angehalten
Plugin-Sicherheit

Gibt die Bearbeitungszeit Script.Source für das angegebene Skript, das. PL: die Skriptszurück.

Diese Funktion ruft den übergebenen Rückruf mit den alten Inhalten des Skripts auf, um den neuen Inhalt des Skript, das. PL: die Skriptszu berechnen.

Wenn das Skript im Skript-Editor geöffnet ist, sendt es eine Anfrage an den Editor, seine Ausgangstextzu aktualisieren.Der Editor kann dieses Update ablehnen, wenn die Script.Source Eigenschaft mit der Version des Skripts des Benutzers veraltet war, als diese Funktion aufgerufen wurde, in dem Fall wird der Rückruf erneut ausgelöst und der Versuch wiederholt.

Der Rückruf kann nicht ausgeführt werden.Wenn der Rückruf nil zurückgibt, wird die Operation abgebrochen.Diese Funktion gibt bis zur Abbruchung oder zum Erfolg der Operation aus.

Wenn das Skript nicht im Editor geöffnet ist, wird der neue Inhalt an die Ausgangstextaktualisiert, die der Text ist, den der Editor anzeigen würde, wenn er geöffnet wird.


local ses = game:GetService('ScriptEditorService')
ses:UpdateSourceAsync(Workspace.Script, function(oldContent)
return oldContent .. " World!"
end)

Parameter

Skriptinstanz zum Aktualisieren.

Standardwert: ""
callback: function

Die Funktion, um neuen Skript-Inhalt zurückzugeben.

Standardwert: ""

Rückgaben

()

Ereignisse

TextDocumentDidChange

Plugin-Sicherheit

Feuert kurz nach einem ScriptDocument Änderungen. Das textChanged ist eine Reihe von Änderungsstrukturen des Formats:

{ range : { start : { line : number, character : number }, end : { line : number, character : number } }, text: string }

Parameter

document: ScriptDocument
changesArray: Variant

Code-Beispiele

ScriptEditorService.TextDocumentDidChange

ScriptEditorService.TextDocumentDidChange

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidChange:Connect(function(scriptDocument, changes)
print("Changed", scriptDocument, changes)
end)

TextDocumentDidClose

Plugin-Sicherheit

Feuert kurz bevor ein ScriptDocument Objekt zerstört wird, was passiert, sobald der Skript-Editor geschlossen ist.Nach diesem Vorfall wird der ScriptDocument in einen "Geschlossenen" Zustand verfallen, und versuchen, seine Methoden aufzurufen, zeigt einen Fehler an.ScriptDocument

Parameter

oldDocument: ScriptDocument

Code-Beispiele

ScriptEditorService.TextDocumentDidClose

ScriptEditorService.TextDocumentDidClose

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidClose:Connect(function(scriptDocument)
print("Closed", scriptDocument)
end)

TextDocumentDidOpen

Plugin-Sicherheit

Feuert gerade nachdem ein ScriptDocument Objekt erstellt und dem Dienst zugewiesen wurde, was passiert, sobald der Skript-Editor geöffnet wird.

Parameter

newDocument: ScriptDocument

Code-Beispiele

ScriptEditorService.TextDocumentDidOpen

ScriptEditorService.TextDocumentDidOpen

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
ScriptEditorService.TextDocumentDidOpen:Connect(function(scriptDocument)
print("Opened", scriptDocument)
end)