keyboard macroの最中はhelmを使わない

個人的にC-sでの検索に通常のisearch-forwardではなく, helm-swoopを利用している.

しかしこうすると, keyboard macroを入力している間にhelmが走り、これがどうやら後ほどkeyboard macroを再生するときに問題があるようだ.

keyboard macroを記録中かどうかはdefining-kbd-macroという変数を見ればわかるようだ. また, keyboard macroの実行中はexecuting-kdb-macroを見ればわかる.

defining-kbd-macrotのときはisearch-forwardを利用するようにする.

;; (global-set-key (kbd "C-s") 'helm-swoop)
(defun my-search-forward ()
  "Customized search function to use helm-swoop except for in defining keyboard macro."
  (interactive)
  (if (or defining-kbd-macro executing-kbd-macro)
       (isearch-forward)
     (helm-swoop)))
(global-set-key (kbd "C-s") 'my-search-forward)

同様のkeyboard macroが有効かに応じて挙動を切り替える設定は他の色々なものに利用できるはず.