From 5489883e0199632b8aa269ae268739c96c4b272e Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 4 Nov 2024 02:15:18 -0300 Subject: core: smol lua fixes --- lang/lua/astal/binding.lua | 9 ++++---- lang/lua/astal/gtk3/app.lua | 50 +++++++++++++++++----------------------- lang/lua/astal/gtk3/astalify.lua | 4 +--- lang/lua/astal/variable.lua | 12 ++++++---- 4 files changed, 33 insertions(+), 42 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 2944ec4..610f3a6 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -7,7 +7,7 @@ local GObject = lgi.require("GObject", "2.0") ---@field transform_fn function local Binding = {} ----@param emitter table +---@param emitter table | userdata ---@param property? string ---@return Binding function Binding.new(emitter, property) @@ -28,11 +28,11 @@ function Binding:__tostring() return str .. ">" end +---@return any function Binding:get() if self.property ~= nil and GObject.Object:is_type_of(self.emitter) then return self.transform_fn(self.emitter[self.property]) - end - if type(self.emitter.get) == "function" then + elseif type(self.emitter.get) == "function" then return self.transform_fn(self.emitter:get()) end error("can not get: Not a GObject or a Variable " + self) @@ -58,8 +58,7 @@ function Binding:subscribe(callback) return function() GObject.signal_handler_disconnect(self.emitter, id) end - end - if type(self.emitter.subscribe) == "function" then + elseif type(self.emitter.subscribe) == "function" then return self.emitter:subscribe(function() callback(self:get()) end) diff --git a/lang/lua/astal/gtk3/app.lua b/lang/lua/astal/gtk3/app.lua index 7895f69..e0ae65a 100644 --- a/lang/lua/astal/gtk3/app.lua +++ b/lang/lua/astal/gtk3/app.lua @@ -24,30 +24,28 @@ end local app = AstalLua() ----@class StartConfig ----@field icons? string ----@field instance_name? string ----@field gtk_theme? string ----@field icon_theme? string ----@field cursor_theme? string ----@field css? string ----@field hold? boolean ----@field request_handler? fun(msg: string, response: fun(res: any)) ----@field main? fun(...): unknown ----@field client? fun(message: fun(msg: string): string, ...): unknown +--- @alias StartConfig { +--- icons?: string, +--- instance_name?: string, +--- gtk_theme?: string, +--- icon_theme?: string, +--- cursor_theme?: string, +--- css?: string, +--- hold?: boolean, +--- request_handler?: fun(msg: string, response: fun(res: any)), +--- main?: fun(...), +--- client?: fun(message: fun(msg: string): string, ...), +---} ----@param config StartConfig | nil +---@param config? StartConfig function Astal.Application:start(config) - if config == nil then - config = {} - end + config = config or {} - if config.client == nil then - config.client = function() + config.client = config.client + or function() print('Astal instance "' .. app.instance_name .. '" is already running') os.exit(1) end - end if config.hold == nil then config.hold = true @@ -61,17 +59,11 @@ function Astal.Application:start(config) if config.icons then self:add_icons(config.icons) end - if config.instance_name then - self.instance_name = config.instance_name - end - if config.gtk_theme then - self.gtk_theme = config.gtk_theme - end - if config.icon_theme then - self.icon_theme = config.icon_theme - end - if config.cursor_theme then - self.cursor_theme = config.cursor_theme + + for _, key in ipairs({ "instance_name", "gtk_theme", "icon_theme", "cursor_theme" }) do + if config[key] then + self[key] = config[key] + end end app.on_activate = function() diff --git a/lang/lua/astal/gtk3/astalify.lua b/lang/lua/astal/gtk3/astalify.lua index 211a1d4..95faa2c 100644 --- a/lang/lua/astal/gtk3/astalify.lua +++ b/lang/lua/astal/gtk3/astalify.lua @@ -163,9 +163,7 @@ return function(ctor) end return function(tbl) - if tbl == nil then - tbl = {} - end + tbl = tbl or {} local bindings = {} local setup = tbl.setup diff --git a/lang/lua/astal/variable.lua b/lang/lua/astal/variable.lua index 2305a71..f06fd16 100644 --- a/lang/lua/astal/variable.lua +++ b/lang/lua/astal/variable.lua @@ -40,7 +40,7 @@ function Variable.new(value) return variable end ----@param transform? fun(v: any): any +---@param transform? fun(v: any): any ---@return Binding function Variable:__call(transform) if type(transform) == "nil" then @@ -54,10 +54,13 @@ function Variable:__tostring() return "Variable<" .. tostring(self:get()) .. ">" end +---@return any function Variable:get() return self._value end +---@param value any +---@return nil function Variable:set(value) if value ~= self:get() then self._value = value @@ -107,7 +110,6 @@ function Variable:start_watch() end) end - function Variable:stop_poll() if self:is_polling() then self._poll.cancel() @@ -122,7 +124,6 @@ function Variable:stop_watch() self._watch = nil end - function Variable:drop() self.variable.emit_dropped() end @@ -180,8 +181,9 @@ end ---@param exec string | string[] ---@param transform? fun(next: any, prev: any): any +---@return Variable function Variable:watch(exec, transform) - transform = transform or function (next) + transform = transform or function(next) return next end @@ -272,4 +274,4 @@ return setmetatable(Variable, { __call = function(_, v) return Variable.new(v) end, -}) \ No newline at end of file +}) -- cgit v1.2.3 From b697dd8e1d936d6a789c73fbacfc65698d2dab39 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 4 Nov 2024 02:17:00 -0300 Subject: core: smol lua fixes --- lang/lua/astal/binding.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 610f3a6..81d2177 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -34,8 +34,9 @@ function Binding:get() return self.transform_fn(self.emitter[self.property]) elseif type(self.emitter.get) == "function" then return self.transform_fn(self.emitter:get()) + else + error("can not get: Not a GObject or a Variable " + self) end - error("can not get: Not a GObject or a Variable " + self) end ---@param transform fun(value: any): any @@ -62,8 +63,9 @@ function Binding:subscribe(callback) return self.emitter:subscribe(function() callback(self:get()) end) + else + error("can not subscribe: Not a GObject or a Variable " + self) end - error("can not subscribe: Not a GObject or a Variable " + self) end Binding.__index = Binding -- cgit v1.2.3 From f02e58342c61b4ae312344be2805aa019d65541d Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 5 Nov 2024 15:53:23 -0300 Subject: core: typing for lua --- lang/lua/astal/binding.lua | 9 +++++++-- lang/lua/astal/gtk3/widget.lua | 2 ++ lang/lua/astal/variable.lua | 9 +++++---- 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 81d2177..9708ef8 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -5,7 +5,9 @@ local GObject = lgi.require("GObject", "2.0") ---@field emitter table|Variable ---@field property? string ---@field transform_fn function +---@overload fun(emitter: table | userdata, property?: string): Binding local Binding = {} +Binding.__index = Binding ---@param emitter table | userdata ---@param property? string @@ -68,5 +70,8 @@ function Binding:subscribe(callback) end end -Binding.__index = Binding -return Binding +return setmetatable(Binding, { + __call = function(_, emitter, prop) + return Binding.new(emitter, prop) + end, +}) diff --git a/lang/lua/astal/gtk3/widget.lua b/lang/lua/astal/gtk3/widget.lua index beaad6c..1a4454e 100644 --- a/lang/lua/astal/gtk3/widget.lua +++ b/lang/lua/astal/gtk3/widget.lua @@ -3,7 +3,9 @@ local Astal = lgi.require("Astal", "3.0") local Gtk = lgi.require("Gtk", "3.0") local astalify = require("astal.gtk3.astalify") +---@overload fun(ctor: any): function local Widget = { + ---@overload fun(ctor: any): function astalify = astalify, Box = astalify(Astal.Box), Button = astalify(Astal.Button), diff --git a/lang/lua/astal/variable.lua b/lang/lua/astal/variable.lua index f06fd16..7a0d712 100644 --- a/lang/lua/astal/variable.lua +++ b/lang/lua/astal/variable.lua @@ -17,6 +17,7 @@ local Process = require("astal.process") ---@field private poll_fn? function ---@field private watch_transform? fun(next: any, prev: any): any ---@field private watch_exec? string[] | string +---@overload fun(value?: any): Variable local Variable = {} Variable.__index = Variable @@ -24,19 +25,19 @@ Variable.__index = Variable ---@return Variable function Variable.new(value) local v = Astal.VariableBase() - local variable = setmetatable({ - variable = v, - _value = value, - }, Variable) + local variable = setmetatable({ variable = v, _value = value }, Variable) + v.on_dropped = function() variable:stop_watch() variable:stop_poll() end + v.on_error = function(_, err) if variable.err_handler then variable.err_handler(err) end end + return variable end -- cgit v1.2.3 From b1da91dcced3803c764d22d4da1a49c23d7e97ed Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 5 Nov 2024 16:13:49 -0300 Subject: oops --- lang/lua/astal/binding.lua | 4 ++-- lang/lua/astal/gtk3/widget.lua | 1 - lang/lua/astal/init.lua | 1 + lang/lua/astal/variable.lua | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/binding.lua b/lang/lua/astal/binding.lua index 9708ef8..dd2df7f 100644 --- a/lang/lua/astal/binding.lua +++ b/lang/lua/astal/binding.lua @@ -2,14 +2,14 @@ local lgi = require("lgi") local GObject = lgi.require("GObject", "2.0") ---@class Binding ----@field emitter table|Variable +---@field emitter table | Variable | userdata ---@field property? string ---@field transform_fn function ---@overload fun(emitter: table | userdata, property?: string): Binding local Binding = {} Binding.__index = Binding ----@param emitter table | userdata +---@param emitter table | Variable | userdata ---@param property? string ---@return Binding function Binding.new(emitter, property) diff --git a/lang/lua/astal/gtk3/widget.lua b/lang/lua/astal/gtk3/widget.lua index 1a4454e..c8857e7 100644 --- a/lang/lua/astal/gtk3/widget.lua +++ b/lang/lua/astal/gtk3/widget.lua @@ -5,7 +5,6 @@ local astalify = require("astal.gtk3.astalify") ---@overload fun(ctor: any): function local Widget = { - ---@overload fun(ctor: any): function astalify = astalify, Box = astalify(Astal.Box), Button = astalify(Astal.Button), diff --git a/lang/lua/astal/init.lua b/lang/lua/astal/init.lua index 5630ba4..190994a 100644 --- a/lang/lua/astal/init.lua +++ b/lang/lua/astal/init.lua @@ -7,6 +7,7 @@ local Binding = require("astal.binding") local File = require("astal.file") local Process = require("astal.process") local Time = require("astal.time") +---@type Variable | fun(v: any): Variable local Variable = require("astal.variable") return { diff --git a/lang/lua/astal/variable.lua b/lang/lua/astal/variable.lua index 7a0d712..9f67715 100644 --- a/lang/lua/astal/variable.lua +++ b/lang/lua/astal/variable.lua @@ -17,7 +17,7 @@ local Process = require("astal.process") ---@field private poll_fn? function ---@field private watch_transform? fun(next: any, prev: any): any ---@field private watch_exec? string[] | string ----@overload fun(value?: any): Variable +---@overload fun(transform?: fun(v: any): any): Binding local Variable = {} Variable.__index = Variable -- cgit v1.2.3 From 44710fb30105f5e76fc84845e9379787440f3c4c Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 8 Nov 2024 00:01:57 -0300 Subject: stoopid zed --- lang/lua/astal/gtk3/app.lua | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/gtk3/app.lua b/lang/lua/astal/gtk3/app.lua index e0ae65a..58564ce 100644 --- a/lang/lua/astal/gtk3/app.lua +++ b/lang/lua/astal/gtk3/app.lua @@ -24,18 +24,17 @@ end local app = AstalLua() ---- @alias StartConfig { ---- icons?: string, ---- instance_name?: string, ---- gtk_theme?: string, ---- icon_theme?: string, ---- cursor_theme?: string, ---- css?: string, ---- hold?: boolean, ---- request_handler?: fun(msg: string, response: fun(res: any)), ---- main?: fun(...), ---- client?: fun(message: fun(msg: string): string, ...), ----} +---@class StartConfig +---@field icons string? +---@field instance_name string? +---@field gtk_theme string? +---@field icon_theme string? +---@field cursor_theme string? +---@field css string? +---@field hold boolean? +---@field request_handler fun(msg: string, response: fun(res: any)): nil +---@field main fun(...): nil +---@field client fun(message: fun(msg: string): string, ...): nil ---@param config? StartConfig function Astal.Application:start(config) -- cgit v1.2.3 From 990feb3ab1ce8221edf03e1babe33a9ce48af54c Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 11 Nov 2024 00:53:46 -0300 Subject: core: Variable.derive fix --- lang/lua/astal/variable.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lang/lua/astal') diff --git a/lang/lua/astal/variable.lua b/lang/lua/astal/variable.lua index 9f67715..ad59a3f 100644 --- a/lang/lua/astal/variable.lua +++ b/lang/lua/astal/variable.lua @@ -243,7 +243,7 @@ function Variable.derive(deps, transform) for i, var in ipairs(deps) do if getmetatable(var) == Variable then - deps[i] = Binding.new(var) + deps[i] = var() end end @@ -252,7 +252,7 @@ function Variable.derive(deps, transform) for i, binding in ipairs(deps) do params[i] = binding:get() end - return transform(table.unpack(params), 1, #deps) + return transform(table.unpack(params, 1, #deps)) end local var = Variable.new(update()) -- cgit v1.2.3