LauncherEX で最後に実行したコマンドを実行する

以下の環境で動作確認しました。

LauncherEX をモード内のみで有効なキーバインドを設定できるようにする - anonymous苦労者 のコンストラクタ置き換えをしているものとします。
LauncherEX 0.0.11 以降は、コンストラクタの書き換えは不要になりました。
LauncherEXで、コマンド実行時に _SetLastCommand() で、インスタンス変数 _LastCommand に (コマンド名, モディファイアキー) のタプルを記録し、_RepeatLastCommand() で変数 _LastCommand を Execute() します。
_RepeatLastCommand() で AttributeError を握り潰しているのは、関数実行時に変数が存在しない場合があるからです。

コード

config.py などに記述します。

## LauncherEX
import clmode_lex # `from clconst import *' より前に記述する


from clapi import *
from clconst import *


# コマンドを記録する
def _SetLastCommand(event):
    import clmode
    clmode.Top()._LastCommand = (event.str, event.mod)

def _RepeatLastCommand():
    u"""最後に実行したコマンドを実行する"""
    import clmode
    mode = clmode.Top()
    assert isinstance(mode, clmode_lex.clLauncherEX.LauncherModeEX)
    try:
        Execute(*mode._LastCommand)
    except AttributeError:
        pass

# 初期化時
def _LEXHookOnInit(event):
    event.keys.update({
        (ord('I'), MODKEY_ALT) : _RepeatLastCommand
    })
clmode_lex.AddHook(clmode_lex.lex_hook_on_init, _LEXHookOnInit)
PopMode()
PushMode(clmode_lex.clLauncherEX.LauncherModeEX())

# コマンド実行前
clmode_lex.AddHook(clmode_lex.lex_hook_on_before_command, _SetLastCommand)

# コマンド実行後
clmode_lex.AddHook(clmode_lex.lex_hook_on_after_command, _SetLastCommand)