export enum Command { Open = "open", TabOpen = "tabopen", WindowOpen = "winopen", Buffer = "buffer", BufferDelete = "bdelete", BufferDeleteForce = "bdelete!", BuffersDelete = "bdeletes", BuffersDeleteForce = "bdeletes!", AddBookmark = "addbookmark", Quit = "quit", QuitAll = "quitall", Set = "set", Help = "help", } export namespace Command { export function members(): Command[] { return [ Command.Open , Command.TabOpen , Command.WindowOpen , Command.Buffer , Command.BufferDelete , Command.BufferDeleteForce , Command.BuffersDelete , Command.BuffersDeleteForce , Command.AddBookmark , Command.Quit , Command.QuitAll , Command.Set , Command.Help , ] } export function valueOf(value: string): Command { const map = new Map(members().map(cmd => [cmd.toString(), cmd])); const cmd = map.get(value); if (!cmd) { throw new Error(`unknown command '${value}`); } return cmd; } }