refactor: unify core actions and Ex command aliases

This commit is contained in:
2026-10-10 21:57:33 +02:00
parent 4e9378816e
commit 3f05287d79
9 changed files with 536 additions and 203 deletions
+18 -4
View File
@@ -58,16 +58,30 @@ module Vamp
# @type [Module<Vamp::Core>]
Core = Module.new
# @param names [Array<String>] dotted core action names
# @param entries [Array<Hash{String => String, nil}>] action name and optional Ex alias descriptors
# @return [Array<Module>] frozen action namespaces
def self.install_actions(names)
raise TypeError, "core action catalog must be an Array" unless names.is_a?(Array)
def self.install_actions(entries)
raise TypeError, "core action catalog must be an Array" unless entries.is_a?(Array)
namespaces = [Core]
names.each { |name| install_action(name, namespaces) }
aliases = {}
entries.each do |entry|
raise TypeError, "core action descriptor must be a Hash" unless entry.is_a?(Hash)
install_action(entry.fetch("name"), namespaces)
ex = entry.fetch("ex")
aliases[string!(ex, "core Ex alias").freeze] = true unless ex.nil?
end
@builtin_commands = aliases.freeze
namespaces.each(&:freeze)
end
# @param name [String] binding command name
# @return [Boolean] whether the catalog owns this textual Ex alias
def self.builtin_command?(name)
@builtin_commands.key?(name)
end
# Frozen binding mode values, distinct from a buffer's editing state.
module Modes
# @!method self.normal