ScriptEditorService

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
サービス
複製されていません

このサービスは、ScriptDocument インスタンスとインタラクトするために使用されます。

概要

方法

  • プラグインのセキュリティ

    以前に登録されたコールバックを name という名前で削除します。

  • プラグインのセキュリティ

    以前に登録されたコールバックを name という名前で削除します。

  • プラグインのセキュリティ

    指定の ScriptDocument に対応する開く LuaSourceContainer を返します。また、指定のスクリプトが開くことがない場合は、Class.ScriptDocument を返します。

  • プラグインのセキュリティ

    指定されたスクリプトの編集時間ソースを返します。

  • GetScriptDocuments():Instances
    プラグインのセキュリティ

    コマンドバーを含む現在開いているスクリプトのアレイを返します。

  • RegisterAutocompleteCallback(name : string,priority : number,callbackFunction : function):void
    プラグインのセキュリティ

    自動完了コールバックを登録します callbackFunction 名前の name は、優先順位の priority で優先順位を付与します。

  • RegisterScriptAnalysisCallback(name : string,priority : number,callbackFunction : function):void
    プラグインのセキュリティ

    スクリプト分析コールバックを登録します callbackFunction 名前の namepriority を持つ。

  • イールド
    プラグインのセキュリティ

    スクリプトエディターが指定されたスクリプトを開くリクエスト。リクエストが成功すると、(真、ナイル) が返されます。リクエストが失敗すると、(真、 стリン文字列) が返されます。問題を説明するストリングが返されます。

  • イールド
    プラグインのセキュリティ

    古いスクリプトから新しいコンテンツを生成し、スクリプトエディタが開いているか、または Script インスタンスが閉じている場合、スクリプトエディタを更新します。

イベント

プロパティ

方法

DeregisterAutocompleteCallback

void
プラグインのセキュリティ

以前に登録されたコールバックを name という名前で削除します。

パラメータ

name: string

戻り値

void

コードサンプル

ScriptEditorService:DeregisterAutocompleteCallback

game.ScriptEditorService:DeregisterAutocompleteCallback("foo")

DeregisterScriptAnalysisCallback

void
プラグインのセキュリティ

以前に登録されたコールバックを name という名前で削除します。

パラメータ

name: string

戻り値

void

コードサンプル

ScriptEditorService:DeregisterScriptAnalysisCallback

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

FindScriptDocument

プラグインのセキュリティ

指定の ScriptDocument に対応する開く LuaSourceContainer を返します。また、指定のスクリプトが開くことがない場合は、Class.ScriptDocument を返します。

パラメータ


戻り値

コードサンプル

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
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

プラグインのセキュリティ

指定されたスクリプトの編集時間ソースを返します。

スクリプトが スクリプトエディター で開いている場合、このメソッドは、編集中に表示されているテキストを返します。スクリプトが編集中でない場合は、編集時間ソースは、編集された場合に Script.Source プロパティと一致しません。編集時間ソースは、Class.Script.Source プロパティ

パラメータ


戻り値

GetScriptDocuments

Instances
プラグインのセキュリティ

コマンドバーを含む現在開いているスクリプトのアレイを返します。


戻り値

Instances

コードサンプル

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

void
プラグインのセキュリティ

自動完了コールバックを登録します callbackFunction 名前の name は、優先順位の priority で優先順位を付与します。

スクリプトエディターがオートコンプリートを呼び出すと、登録されたすべてのオートコンプリートコールバックが、オートコンプリートリクエストと応答の優先順位でランクアップします。複数のコールバックは優先順位

調子に乗る 必須のタイプは、(Request: table, Response: table) -> table でなければなりません。

リクエスト テーブルには、次の形式があります:


type Request = {
position: {
line: number,
character: number
},
textDocument: {
document: ScriptDocument?,
script: LuaSourceContainer?
}
}
  • position は、自動完了を行うのに使用されるカーソルポジションです。
  • textDocument.document は、存在する場合、ScriptDocument を完了しています。
  • textDocument.script は、存在する場合、LuaSourceContainer です。

textDocument.document と textDocument.script が両方存在する場合、それらは互いに対応します:req.textDocument.document:GetScript() == req.textDocument.script

レポート テーブルには次の形式があります:


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,
replace: { start: { line: number, character: number }, ["end"]: { line: number, character: number } },
}?
}
}
}
  • Response.items は完了アイテムの配列です。このアイテムの順序は重要でないため、エディタでユーザータイプとして扱われます。
  • Response.items[n].label は、オートコンプリートメニューに表示されるアイテムのラベルです。
  • Response.items[n].kind は、これがどのタイプの自動完了アイテムかを指定します。これは、エディタに与えられるアイテムのアイコンを制御します。すべての種類にはユニークなアイコンがありません。如果未指定されている場合は、エディタは「テキスト」アイコンを表示します。サポートされていない種類は、「プロパティ」
  • Response.items[n].tags は、この完了アイテムを説明するタグのアレイを指定します。Enum.CompletionItemTag の詳細は、「枚集完了アイテムタグ」を参照してください。
  • Response.items[n].details は、完了アイテムに関する詳細を記述するストリングを指定します。デフォルトアイテムの場合、これはタイプのストリング表現です。ドキュメントウィジェットが表示されるためには、documentation が必要ですが、documentation.value は空であることがあります。
  • Response.items[n].documentation は、ドキュメントのメインボディを value フィールドに指定します。documentation は、値が空であっても、ドキュメントウィンドウが表示されるようになります。
  • Response.items[n].overloads は、機能の自動完了にかかるオーバーロードの数を指定します。
  • Response.items[n].learnMoreLink クリエイターのドキュメントで関連するページにリンクします。この URL は、作成する roblox.com の https でなければなりません。編集器には、他の URLが表示されません。
  • Response.items[n].codeSample は、完了アイテムのサンプル使用を指定します。documentation は、このフィールドを表示するために空である必要がありません。
  • Response.items[n].preselect この完了アイテムを編集器が他のすべてのアイテムの前にソートし、デフォルトでユーザーに選択します。フェイルすると、フェイルアイテムを編集器が削除し、ユーザーにデフォルトで選択されます。
  • Response.items[n].textEdit 現在、完了を受け入れると、このテキストエディトが適用されます - 新しいテキストでスペーンの間を満たすスペーンを置き換えます。

コールバックが不正な結果を返すか、エラーに遭遇すると、エディタは変更されたレポート テーブルを破棄し、内蔵の自動完了リストを使用します。

パラメータ

name: string
priority: number
callbackFunction: function

戻り値

void

コードサンプル

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

void
プラグインのセキュリティ

スクリプト分析コールバックを登録します callbackFunction 名前の namepriority を持つ。 スクリプト分析コールバックが Studio で実行されると、登録されたすべてのコールバックが優先順位に従って呼び出されます。各コールバックは、以下の形式に一致する応答テーブルを返す必要があり

リクエストテーブルには、次の形式があり、 script は、分析される LuaSourceContainer になります。


type Request = {
script: LuaSourceContainer?
}

応答テーブルには、次の形式があります。diagnostics は、診断テーブルの配列です。各診断テーブルには、以下にリストされているエントリがあります。


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 は、リンターによってハイライトする必要があるテキスト範囲を表し、どの行/文字をハイライトするか、どの行/文字をストップハイライトするかを提供します。
  • code はメッセージのラベルです。
  • message は、行に表示する警告メッセージです。これは、ユーザーがスクリプトエディタの行にカーソルを置くと、ツールチップに表示されます。
  • severity は、Enum.Severity 値です。これは、スクリプト分析ツールでのスクリプトのカテゴリ化、およびスクリプトエディタでのテキストのハイライトについてどのようにカテゴライズされるかを決定します。
  • codeDescription クリエイターのドキュメントにリンクされた関連するページへのリンク。この URL は、https リクエストで、create.roblox.com に表示されません。

パラメータ

name: string
priority: number
callbackFunction: function

戻り値

void

コードサンプル

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

イールド
プラグインのセキュリティ

スクリプトエディターが指定されたスクリプトを開くリクエスト。リクエストが成功すると、(真、ナイル) が返されます。リクエストが失敗すると、(真、 стリン文字列) が返されます。問題を説明するストリングが返されます。

スクリプトがすでに開いている場合、この関数は成功し、タブを関連するエディタに切り替えます。

パラメータ


戻り値

コードサンプル

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

void
イールド
プラグインのセキュリティ

Class.Script.Source のスクリプトの編集時間を返します。

この関数は、スクリプトの古いコンテンツを使用して、スクリプトの新しいコンテンツを計算するために呼び出されます。

スクリプトが スクリプトエディター で開いている場合、エディターはスクリプトのソースを更新するようにリクエストします。編集器は、Script.Source プロパティがユーザーのスクリプトバージョンと一致しないため、この関数が呼び出されたときにコールバックが再び呼び出さ

コールバックはストランクアウトする可能性があります。コールバックが nil を返すと、オペレーションはキャンセルされます。この関数は、オペレーションがキャンセルされるまでまたは成功するまで生成されます。

スクリプトがエディタで開くことがない場合、新しいコンテンツはスクリプトソースに更新されます。これは、編集者が開くと表示するテキストです。


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

パラメータ

スクリプトインスタンスを更新する必要があります。

callback: function

新しいスクリプトコンテンツを返す関数。


戻り値

void

イベント

TextDocumentDidChange

プラグインのセキュリティ

変更後に直ちに ScriptDocument が変更されます。textChanged は、形式の変更構造のアレイです:

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

パラメータ

document: ScriptDocument
changesArray: Variant

コードサンプル

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

プラグインのセキュリティ

スクリプトエディタがスクリプトを閉じる直後に ScriptDocument オブジェクトが破壊されるため、このイベントの直後に ScriptDocument は「クローズド」状態になり、ScriptDocument のメソッドを呼び出そうとするとエラーが発生します。 2>Class

パラメータ

oldDocument: ScriptDocument

コードサンプル

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

プラグインのセキュリティ

スクリプトエディタが開いた直後に ScriptDocument オブジェクトが作成され、サービスに親化されます。

パラメータ

newDocument: ScriptDocument

コードサンプル

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)