forked from qt-creator/qt-creator
Lua: Cleanup Hooks
Change-Id: I8e3a1d66ea6125d2cc5ee9c8f8442cca0913fec6 Reviewed-by: <lie@spyro-soft.com> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -19,8 +19,11 @@ It will try to install it if it is not found.
|
|||||||
},
|
},
|
||||||
hooks = {
|
hooks = {
|
||||||
editors = {
|
editors = {
|
||||||
documentOpened = function(document) require 'init'.Hooks.onDocumentOpened(document) end,
|
text = {
|
||||||
documentClosed = function(document) require 'init'.Hooks.onDocumentClosed(document) end,
|
opened = function(document) require 'init'.Hooks.onDocumentOpened(document) end,
|
||||||
|
closed = function(document) require 'init'.Hooks.onDocumentClosed(document) end,
|
||||||
|
contentsChanged = function(document) require 'init'.Hooks.onDocumentContentsChanged(document) end,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup = function()
|
setup = function()
|
||||||
|
@@ -5,7 +5,7 @@ local Utils = require('Utils')
|
|||||||
local S = require('Settings')
|
local S = require('Settings')
|
||||||
local Gui = require('Gui')
|
local Gui = require('Gui')
|
||||||
local a = require('async')
|
local a = require('async')
|
||||||
local Documents = require('Documents')
|
local TextDocument = require('TextDocument')
|
||||||
|
|
||||||
local function createCommand()
|
local function createCommand()
|
||||||
local cmd = { Settings.binary.expandedValue:nativePath() }
|
local cmd = { Settings.binary.expandedValue:nativePath() }
|
||||||
@@ -96,8 +96,8 @@ end
|
|||||||
|
|
||||||
Hooks = {}
|
Hooks = {}
|
||||||
|
|
||||||
local function onDocumentChanged()
|
function Hooks.onDocumentContentsChanged(document)
|
||||||
print("onDocumentChanged() called")
|
print("onDocumentContentsChanged() called", document)
|
||||||
-- TODO:
|
-- TODO:
|
||||||
-- All the necessary checks before sending the request
|
-- All the necessary checks before sending the request
|
||||||
-- Create request:
|
-- Create request:
|
||||||
@@ -110,8 +110,7 @@ local function onDocumentChanged()
|
|||||||
---Called when a document is opened.
|
---Called when a document is opened.
|
||||||
---@param document TextDocument
|
---@param document TextDocument
|
||||||
function Hooks.onDocumentOpened(document)
|
function Hooks.onDocumentOpened(document)
|
||||||
print("TextDocument found: ", document)
|
print("TextDocument found: ", document)
|
||||||
document:setChangedCallback(onDocumentChanged)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---Called when a document is closed.
|
---Called when a document is closed.
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
add_qtc_plugin(Lua
|
add_qtc_plugin(Lua
|
||||||
PLUGIN_DEPENDS Core
|
PLUGIN_DEPENDS Core
|
||||||
PUBLIC_DEPENDS lua546 sol2 TextEditor
|
PUBLIC_DEPENDS lua546 sol2 TextEditor
|
||||||
@@ -7,8 +6,6 @@ add_qtc_plugin(Lua
|
|||||||
bindings/action.cpp
|
bindings/action.cpp
|
||||||
bindings/async.cpp
|
bindings/async.cpp
|
||||||
bindings/core.cpp
|
bindings/core.cpp
|
||||||
bindings/documents.cpp
|
|
||||||
bindings/documents.h
|
|
||||||
bindings/fetch.cpp
|
bindings/fetch.cpp
|
||||||
bindings/gui.cpp
|
bindings/gui.cpp
|
||||||
bindings/hook.cpp
|
bindings/hook.cpp
|
||||||
@@ -19,6 +16,7 @@ add_qtc_plugin(Lua
|
|||||||
bindings/messagemanager.cpp
|
bindings/messagemanager.cpp
|
||||||
bindings/qtcprocess.cpp
|
bindings/qtcprocess.cpp
|
||||||
bindings/settings.cpp
|
bindings/settings.cpp
|
||||||
|
bindings/textdocument.cpp
|
||||||
bindings/utils.cpp
|
bindings/utils.cpp
|
||||||
luaengine.cpp
|
luaengine.cpp
|
||||||
luaengine.h
|
luaengine.h
|
||||||
@@ -28,24 +26,6 @@ add_qtc_plugin(Lua
|
|||||||
luaqttypes.cpp
|
luaqttypes.cpp
|
||||||
luaqttypes.h
|
luaqttypes.h
|
||||||
luatr.h
|
luatr.h
|
||||||
meta/action.lua
|
|
||||||
meta/async.lua
|
|
||||||
meta/core.lua
|
|
||||||
meta/documents.lua
|
|
||||||
meta/fetch.lua
|
|
||||||
meta/gui.lua
|
|
||||||
meta/json.lua
|
|
||||||
meta/install.lua
|
|
||||||
meta/localsocket.lua
|
|
||||||
meta/lsp.lua
|
|
||||||
meta/messagemanager.lua
|
|
||||||
meta/process.lua
|
|
||||||
meta/qt.lua
|
|
||||||
meta/qtc.lua
|
|
||||||
meta/settings.lua
|
|
||||||
meta/simpletypes.lua
|
|
||||||
meta/utils.lua
|
|
||||||
meta/widgets.lua
|
|
||||||
wizards/wizards.qrc
|
wizards/wizards.qrc
|
||||||
# generateqtbindings.cpp # Use this if you need to generate some code.
|
# generateqtbindings.cpp # Use this if you need to generate some code.
|
||||||
)
|
)
|
||||||
@@ -70,32 +50,7 @@ if (MSVC)
|
|||||||
set_property(SOURCE bindings/settings.cpp PROPERTY COMPILE_FLAGS /bigobj)
|
set_property(SOURCE bindings/settings.cpp PROPERTY COMPILE_FLAGS /bigobj)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(META_FILES
|
|
||||||
meta/action.lua
|
|
||||||
meta/async.lua
|
|
||||||
meta/core.lua
|
|
||||||
meta/documents.lua
|
|
||||||
meta/fetch.lua
|
|
||||||
meta/gui.lua
|
|
||||||
meta/json.lua
|
|
||||||
meta/localsocket.lua
|
|
||||||
meta/lsp.lua
|
|
||||||
meta/messagemanager.lua
|
|
||||||
meta/process.lua
|
|
||||||
meta/qt.lua
|
|
||||||
meta/qtc.lua
|
|
||||||
meta/settings.lua
|
|
||||||
meta/simpletypes.lua
|
|
||||||
meta/utils.lua
|
|
||||||
meta/widgets.lua
|
|
||||||
)
|
|
||||||
|
|
||||||
qtc_copy_to_builddir(copy_lua_meta_files
|
qtc_copy_to_builddir(copy_lua_meta_files
|
||||||
DESTINATION ${IDE_DATA_PATH}/lua
|
DIRECTORIES meta
|
||||||
FILES ${META_FILES}
|
|
||||||
)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES ${META_FILES}
|
|
||||||
DESTINATION ${IDE_DATA_PATH}/lua/meta
|
DESTINATION ${IDE_DATA_PATH}/lua/meta
|
||||||
)
|
)
|
||||||
|
@@ -1,30 +0,0 @@
|
|||||||
// Copyright (C) 2024 The Qt Company Ltd.
|
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
||||||
|
|
||||||
#include "../luaengine.h"
|
|
||||||
#include "sol/sol.hpp"
|
|
||||||
|
|
||||||
#include "documents.h"
|
|
||||||
#include <texteditor/textdocument.h>
|
|
||||||
|
|
||||||
namespace Lua::Internal {
|
|
||||||
|
|
||||||
void addDocumentsModule()
|
|
||||||
{
|
|
||||||
LuaEngine::registerProvider("Documents", [](sol::state_view lua) -> sol::object {
|
|
||||||
sol::table documents = lua.create_table();
|
|
||||||
|
|
||||||
documents.new_usertype<LuaTextDocument>(
|
|
||||||
"TextDocument",
|
|
||||||
sol::no_constructor,
|
|
||||||
"setChangedCallback",
|
|
||||||
[](LuaTextDocument &self, sol::function callback) {
|
|
||||||
self.setChangedCallback(callback);
|
|
||||||
});
|
|
||||||
|
|
||||||
return documents;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Lua::Internal
|
|
||||||
|
|
@@ -1,40 +0,0 @@
|
|||||||
// Copyright (C) 2024 The Qt Company Ltd.
|
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "sol/sol.hpp"
|
|
||||||
#include <texteditor/textdocument.h>
|
|
||||||
|
|
||||||
namespace Lua {
|
|
||||||
|
|
||||||
class LuaTextDocument : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
LuaTextDocument(TextEditor::TextDocument *document)
|
|
||||||
: m_document(document)
|
|
||||||
{
|
|
||||||
connect(
|
|
||||||
m_document,
|
|
||||||
&TextEditor::TextDocument::contentsChanged,
|
|
||||||
this,
|
|
||||||
&LuaTextDocument::contentsChanged);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setChangedCallback(sol::function lua_function) { m_changedCallback = lua_function; }
|
|
||||||
|
|
||||||
void contentsChanged()
|
|
||||||
{
|
|
||||||
if (m_changedCallback)
|
|
||||||
m_changedCallback();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
TextEditor::TextDocument *m_document;
|
|
||||||
sol::function m_changedCallback;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Lua
|
|
@@ -3,61 +3,22 @@
|
|||||||
|
|
||||||
#include "../luaengine.h"
|
#include "../luaengine.h"
|
||||||
|
|
||||||
#include "documents.h"
|
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
|
|
||||||
namespace Lua {
|
namespace Lua {
|
||||||
|
|
||||||
class Hook : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
Hook(QObject *source);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void trigger(sol::table &args);
|
|
||||||
};
|
|
||||||
|
|
||||||
Hook::Hook(QObject *source)
|
|
||||||
: QObject(source)
|
|
||||||
{}
|
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
void addHookModule()
|
void addHookModule()
|
||||||
{
|
{
|
||||||
LuaEngine::autoRegister([](sol::state_view lua) {
|
|
||||||
auto connection
|
|
||||||
= lua.new_usertype<QMetaObject::Connection>("QMetaConnection", sol::no_constructor);
|
|
||||||
|
|
||||||
auto hook = lua.new_usertype<Hook>(
|
|
||||||
"Hook",
|
|
||||||
sol::no_constructor,
|
|
||||||
"connect",
|
|
||||||
[](Hook *hook, const sol::function &func) -> QMetaObject::Connection {
|
|
||||||
QMetaObject::Connection con
|
|
||||||
= QObject::connect(hook, &Hook::trigger, [func](sol::table args) {
|
|
||||||
auto res = LuaEngine::void_safe_call(func, args);
|
|
||||||
QTC_CHECK_EXPECTED(res);
|
|
||||||
});
|
|
||||||
return con;
|
|
||||||
},
|
|
||||||
"disconnect",
|
|
||||||
[](Hook *, QMetaObject::Connection con) { QObject::disconnect(con); });
|
|
||||||
});
|
|
||||||
|
|
||||||
LuaEngine::registerHook("editors.documentOpened", [](const sol::protected_function &func) {
|
LuaEngine::registerHook("editors.documentOpened", [](const sol::protected_function &func) {
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
Core::EditorManager::instance(),
|
Core::EditorManager::instance(),
|
||||||
&Core::EditorManager::documentOpened,
|
&Core::EditorManager::documentOpened,
|
||||||
[func](Core::IDocument *document) {
|
[func](Core::IDocument *document) {
|
||||||
auto text_document = qobject_cast<TextEditor::TextDocument *>(document);
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
if (text_document) {
|
QTC_CHECK_EXPECTED(res);
|
||||||
QTC_CHECK_EXPECTED(LuaEngine::void_safe_call(
|
|
||||||
func, std::make_unique<LuaTextDocument>(text_document)));
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -66,11 +27,8 @@ void addHookModule()
|
|||||||
Core::EditorManager::instance(),
|
Core::EditorManager::instance(),
|
||||||
&Core::EditorManager::documentClosed,
|
&Core::EditorManager::documentClosed,
|
||||||
[func](Core::IDocument *document) {
|
[func](Core::IDocument *document) {
|
||||||
auto text_document = qobject_cast<TextEditor::TextDocument *>(document);
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
if (text_document) {
|
QTC_CHECK_EXPECTED(res);
|
||||||
QTC_CHECK_EXPECTED(LuaEngine::void_safe_call(
|
|
||||||
func, std::make_unique<LuaTextDocument>(text_document)));
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -78,5 +36,3 @@ void addHookModule()
|
|||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
} // namespace Lua
|
} // namespace Lua
|
||||||
|
|
||||||
#include "hook.moc"
|
|
||||||
|
144
src/plugins/lua/bindings/textdocument.cpp
Normal file
144
src/plugins/lua/bindings/textdocument.cpp
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
// Copyright (C) 2024 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
#include "../luaengine.h"
|
||||||
|
|
||||||
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
|
|
||||||
|
#include <texteditor/textdocument.h>
|
||||||
|
|
||||||
|
#include "sol/sol.hpp"
|
||||||
|
|
||||||
|
namespace Lua::Internal {
|
||||||
|
|
||||||
|
class TextDocumentRegistry : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
static TextDocumentRegistry *instance()
|
||||||
|
{
|
||||||
|
static TextDocumentRegistry *instance = new TextDocumentRegistry();
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
TextDocumentRegistry()
|
||||||
|
{
|
||||||
|
connect(
|
||||||
|
Core::EditorManager::instance(),
|
||||||
|
&Core::EditorManager::documentOpened,
|
||||||
|
this,
|
||||||
|
&TextDocumentRegistry::onDocumentOpened);
|
||||||
|
|
||||||
|
connect(
|
||||||
|
Core::EditorManager::instance(),
|
||||||
|
&Core::EditorManager::documentClosed,
|
||||||
|
this,
|
||||||
|
&TextDocumentRegistry::onDocumentClosed);
|
||||||
|
|
||||||
|
connect(
|
||||||
|
Core::EditorManager::instance(),
|
||||||
|
&Core::EditorManager::currentEditorChanged,
|
||||||
|
this,
|
||||||
|
[this](Core::IEditor *editor) {
|
||||||
|
if (!editor) {
|
||||||
|
emit currentDocumentChanged(nullptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto document = editor->document();
|
||||||
|
auto textDocument = qobject_cast<TextEditor::TextDocument *>(document);
|
||||||
|
if (textDocument) {
|
||||||
|
emit currentDocumentChanged(textDocument);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit currentDocumentChanged(nullptr);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void onDocumentOpened(Core::IDocument *document)
|
||||||
|
{
|
||||||
|
auto textDocument = qobject_cast<TextEditor::TextDocument *>(document);
|
||||||
|
if (!textDocument)
|
||||||
|
return;
|
||||||
|
|
||||||
|
connect(textDocument, &TextEditor::TextDocument::contentsChanged, this, [this, textDocument] {
|
||||||
|
emit documentContentsChanged(textDocument);
|
||||||
|
});
|
||||||
|
|
||||||
|
emit documentOpened(textDocument);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onDocumentClosed(Core::IDocument *document)
|
||||||
|
{
|
||||||
|
auto textDocument = qobject_cast<TextEditor::TextDocument *>(document);
|
||||||
|
if (!textDocument)
|
||||||
|
return;
|
||||||
|
|
||||||
|
document->disconnect(this);
|
||||||
|
emit documentClosed(textDocument);
|
||||||
|
}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void documentOpened(TextEditor::TextDocument *document);
|
||||||
|
void currentDocumentChanged(TextEditor::TextDocument *document);
|
||||||
|
void documentClosed(TextEditor::TextDocument *document);
|
||||||
|
void documentContentsChanged(TextEditor::TextDocument *document);
|
||||||
|
};
|
||||||
|
|
||||||
|
void addTextDocumentsModule()
|
||||||
|
{
|
||||||
|
TextDocumentRegistry::instance();
|
||||||
|
|
||||||
|
LuaEngine::registerProvider("TextDocument", [](sol::state_view lua) -> sol::object {
|
||||||
|
sol::table documents = lua.create_table();
|
||||||
|
|
||||||
|
documents.new_usertype<TextEditor::TextDocument>(
|
||||||
|
"TextDocument", sol::no_constructor, "file", &TextEditor::TextDocument::filePath);
|
||||||
|
|
||||||
|
return documents;
|
||||||
|
});
|
||||||
|
|
||||||
|
LuaEngine::registerHook("editors.text.opened", [](sol::function func) {
|
||||||
|
QObject::connect(
|
||||||
|
TextDocumentRegistry::instance(),
|
||||||
|
&TextDocumentRegistry::documentOpened,
|
||||||
|
[func](TextEditor::TextDocument *document) {
|
||||||
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
|
QTC_CHECK_EXPECTED(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
LuaEngine::registerHook("editors.text.closed", [](sol::function func) {
|
||||||
|
QObject::connect(
|
||||||
|
TextDocumentRegistry::instance(),
|
||||||
|
&TextDocumentRegistry::documentClosed,
|
||||||
|
[func](TextEditor::TextDocument *document) {
|
||||||
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
|
QTC_CHECK_EXPECTED(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
LuaEngine::registerHook("editors.text.contentsChanged", [](sol::function func) {
|
||||||
|
QObject::connect(
|
||||||
|
TextDocumentRegistry::instance(),
|
||||||
|
&TextDocumentRegistry::documentContentsChanged,
|
||||||
|
[func](TextEditor::TextDocument *document) {
|
||||||
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
|
QTC_CHECK_EXPECTED(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
LuaEngine::registerHook("editors.text.currentChanged", [](sol::function func) {
|
||||||
|
QObject::connect(
|
||||||
|
TextDocumentRegistry::instance(),
|
||||||
|
&TextDocumentRegistry::currentDocumentChanged,
|
||||||
|
[func](TextEditor::TextDocument *document) {
|
||||||
|
Utils::expected_str<void> res = LuaEngine::void_safe_call(func, document);
|
||||||
|
QTC_CHECK_EXPECTED(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Lua::Internal
|
||||||
|
|
||||||
|
#include "textdocument.moc"
|
@@ -33,8 +33,6 @@ QtcPlugin {
|
|||||||
"action.cpp",
|
"action.cpp",
|
||||||
"async.cpp",
|
"async.cpp",
|
||||||
"core.cpp",
|
"core.cpp",
|
||||||
"documents.cpp",
|
|
||||||
"documents.h",
|
|
||||||
"fetch.cpp",
|
"fetch.cpp",
|
||||||
"gui.cpp",
|
"gui.cpp",
|
||||||
"hook.cpp",
|
"hook.cpp",
|
||||||
@@ -45,6 +43,7 @@ QtcPlugin {
|
|||||||
"messagemanager.cpp",
|
"messagemanager.cpp",
|
||||||
"qtcprocess.cpp",
|
"qtcprocess.cpp",
|
||||||
"settings.cpp",
|
"settings.cpp",
|
||||||
|
"textdocument.cpp",
|
||||||
"utils.cpp",
|
"utils.cpp",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@@ -35,7 +35,6 @@ namespace Lua::Internal {
|
|||||||
void addActionModule();
|
void addActionModule();
|
||||||
void addAsyncModule();
|
void addAsyncModule();
|
||||||
void addCoreModule();
|
void addCoreModule();
|
||||||
void addDocumentsModule();
|
|
||||||
void addFetchModule();
|
void addFetchModule();
|
||||||
void addGuiModule();
|
void addGuiModule();
|
||||||
void addHookModule();
|
void addHookModule();
|
||||||
@@ -46,6 +45,7 @@ void addMessageManagerModule();
|
|||||||
void addProcessModule();
|
void addProcessModule();
|
||||||
void addQtModule();
|
void addQtModule();
|
||||||
void addSettingsModule();
|
void addSettingsModule();
|
||||||
|
void addTextDocumentsModule();
|
||||||
void addUtilsModule();
|
void addUtilsModule();
|
||||||
|
|
||||||
class LuaJsExtension : public QObject
|
class LuaJsExtension : public QObject
|
||||||
@@ -251,7 +251,6 @@ public:
|
|||||||
addActionModule();
|
addActionModule();
|
||||||
addAsyncModule();
|
addAsyncModule();
|
||||||
addCoreModule();
|
addCoreModule();
|
||||||
addDocumentsModule();
|
|
||||||
addFetchModule();
|
addFetchModule();
|
||||||
addGuiModule();
|
addGuiModule();
|
||||||
addHookModule();
|
addHookModule();
|
||||||
@@ -262,6 +261,7 @@ public:
|
|||||||
addProcessModule();
|
addProcessModule();
|
||||||
addQtModule();
|
addQtModule();
|
||||||
addSettingsModule();
|
addSettingsModule();
|
||||||
|
addTextDocumentsModule();
|
||||||
addUtilsModule();
|
addUtilsModule();
|
||||||
|
|
||||||
Core::JsExpander::registerGlobalObject("Lua", [] { return new LuaJsExtension(); });
|
Core::JsExpander::registerGlobalObject("Lua", [] { return new LuaJsExtension(); });
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
---@meta Documents
|
|
||||||
|
|
||||||
local documents = {}
|
|
||||||
|
|
||||||
---@class TextDocument
|
|
||||||
local TextDocument = {}
|
|
||||||
|
|
||||||
---Set a callback that is called when the document is changed.
|
|
||||||
---@param callback function The callback function. The callback function should not take any arguments.
|
|
||||||
function TextDocument:setChangedCallback(callback) end
|
|
||||||
|
|
||||||
return documents
|
|
@@ -34,10 +34,17 @@ QtcPluginDependency = {}
|
|||||||
|
|
||||||
|
|
||||||
---@class EditorHooks
|
---@class EditorHooks
|
||||||
---@field documentOpened function function(document)
|
---@field documentOpened? function function(document)
|
||||||
---@field documentClosed function function(document)
|
---@field documentClosed? function function(document)
|
||||||
|
---@field text? TextEditorHooks
|
||||||
EditorHooks = {}
|
EditorHooks = {}
|
||||||
|
|
||||||
|
---@class TextEditorHooks
|
||||||
|
---@field opened? function function(Documents.TextDocument)
|
||||||
|
---@field closed? function function(Documents.TextDocument)
|
||||||
|
---@field currentChanged? function function(Documents.TextDocument)
|
||||||
|
---@field contentsChanged? function function(Documents.TextDocument)
|
||||||
|
|
||||||
---@class Hooks
|
---@class Hooks
|
||||||
---@field editors? EditorHooks
|
---@field editors? EditorHooks
|
||||||
Hooks = {}
|
Hooks = {}
|
||||||
|
10
src/plugins/lua/meta/textdocument.lua
Normal file
10
src/plugins/lua/meta/textdocument.lua
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---@meta TextDocument
|
||||||
|
|
||||||
|
---@class TextDocument
|
||||||
|
local TextDocument = {}
|
||||||
|
|
||||||
|
---Returns the file path of the document.
|
||||||
|
---@return FilePath filePath The file path of the document.
|
||||||
|
function TextDocument:file() end
|
||||||
|
|
||||||
|
return TextDocument
|
Reference in New Issue
Block a user