diff options
-rw-r--r-- | core/events.lua | 24 | ||||
-rw-r--r-- | core/locale.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.ar.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.de.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.es.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.fr.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.it.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.pl.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.ru.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.sv.conf | 5 | ||||
-rw-r--r-- | core/locales/locale.zh.conf | 5 |
11 files changed, 12 insertions, 62 deletions
diff --git a/core/events.lua b/core/events.lua index 6857b7e7..34f90bf7 100644 --- a/core/events.lua +++ b/core/events.lua @@ -294,7 +294,10 @@ local M = {} -- Emitted by [`buffer.zoom_in()`]() and [`buffer.zoom_out()`](). module('events')]] -local handlers = {} +local handlers = setmetatable({}, {__index = function(t, k) + t[k] = {} + return t[k] +end}) --- -- Adds function *f* to the set of event handlers for event *event* at position @@ -308,9 +311,7 @@ local handlers = {} -- @see disconnect -- @name connect function M.connect(event, f, index) - -- Note: cannot assert() here since _L is undefined early in init process. - if not event then error(_L['Undefined event name']) end - if not handlers[event] then handlers[event] = {} end + assert(type(event) == 'string', 'string expected') M.disconnect(event, f) -- in case it already exists table.insert(handlers[event], index or #handlers[event] + 1, f) end @@ -322,7 +323,6 @@ end -- @see connect -- @name disconnect function M.disconnect(event, f) - if not handlers[event] then return end for i = 1, #handlers[event] do if handlers[event][i] == f then table.remove(handlers[event], i) break end end @@ -344,22 +344,22 @@ local error_emitted = false -- @usage events.emit('my_event', 'my message') -- @name emit function M.emit(event, ...) - assert(event, _L['Undefined event name']) - local h = handlers[event] - if not h then return end - for i = 1, #h do - if not h[i] then break end -- M.disconnect() for this event was called - local ok, result = pcall(h[i], ...) + assert(type(event) == 'string', 'string expectd') + local i = 1 + while i <= #handlers[event] do + local handler = handlers[event][i] + local ok, result = pcall(handler, ...) if not ok then if not error_emitted then error_emitted = true M.emit(events.ERROR, result) error_emitted = false else - io.stderr:write(result) + io.stderr:write(result) -- prevent infinite loop end end if type(result) == 'boolean' then return result end + if handlers[event][i] == handler then i = i + 1 end -- unless M.disconnect() end end diff --git a/core/locale.conf b/core/locale.conf index c38daf68..665915da 100644 --- a/core/locale.conf +++ b/core/locale.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Undefined event name - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Open File diff --git a/core/locales/locale.ar.conf b/core/locales/locale.ar.conf index adf00156..e8a1b9fa 100644 --- a/core/locales/locale.ar.conf +++ b/core/locales/locale.ar.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = اسم حدث غير معرّف - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = افتح diff --git a/core/locales/locale.de.conf b/core/locales/locale.de.conf index 8a08d6e8..050924a3 100644 --- a/core/locales/locale.de.conf +++ b/core/locales/locale.de.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Undefinierter Eventname - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Öffnen diff --git a/core/locales/locale.es.conf b/core/locales/locale.es.conf index 33610d39..895a99c1 100644 --- a/core/locales/locale.es.conf +++ b/core/locales/locale.es.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Nombre de evento sin definir - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Abrir diff --git a/core/locales/locale.fr.conf b/core/locales/locale.fr.conf index 1d3ace45..ae8e826b 100644 --- a/core/locales/locale.fr.conf +++ b/core/locales/locale.fr.conf @@ -11,11 +11,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Nom d’évènement inconnu - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Ouvrir diff --git a/core/locales/locale.it.conf b/core/locales/locale.it.conf index 0b10762c..dc14be61 100644 --- a/core/locales/locale.it.conf +++ b/core/locales/locale.it.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Nome di evento indefinito - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Apri diff --git a/core/locales/locale.pl.conf b/core/locales/locale.pl.conf index 36155f99..f48bd677 100644 --- a/core/locales/locale.pl.conf +++ b/core/locales/locale.pl.conf @@ -11,11 +11,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Brak nazwy zdarzenia - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Otwórz diff --git a/core/locales/locale.ru.conf b/core/locales/locale.ru.conf index eff9878d..20218cee 100644 --- a/core/locales/locale.ru.conf +++ b/core/locales/locale.ru.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Неизвестное название события - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Открыть diff --git a/core/locales/locale.sv.conf b/core/locales/locale.sv.conf index f8c93fa0..0d4b5d89 100644 --- a/core/locales/locale.sv.conf +++ b/core/locales/locale.sv.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = Odefinierat event-namn - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Öppna diff --git a/core/locales/locale.zh.conf b/core/locales/locale.zh.conf index 79215913..cd1f7ed0 100644 --- a/core/locales/locale.zh.conf +++ b/core/locales/locale.zh.conf @@ -10,11 +10,6 @@ # along with that letter will activate (click) the button or menu item. You are # free to use or omit these "_" mnemonics from your translations as you see fit. -# [core/events.lua] -# This error message is displayed if the user accidentally emits an event with -# no name (e.g. mistypes the name of an existing event). -Undefined event name = 未定义的事件名称 - # [core/file_io.lua] # The title of dialogs prompting the user to open a file. Open File = Open File |