emacs – 以编程方式将文本插入到通常阻止事件循环的命令中

我想实现一个命令,将前几个字符键入现有命令,然后让我输入其余的字符.

例如,已经输入以“icicle-”开头的icicle-execute-extended-command的变体.

我试过了:

>键盘宏

>失败(即使是像M-x这样简单的事情)也没有明显的原因.

>功能

>调用icicle-execute-extended-command阻止命令序列

我将如何以一般化的方式进行此操作?

最佳答案 好问题.

以下是您可以尝试的通用内容:

(defun no-mondays ()
  (interactive)
  (minibuffer-with-setup-hook
    (lambda()
      (insert "monday"))
    (call-interactively 'query-replace)))

这是一个重构:

(defun with-initial-minibuffer (str fun)
  `(lambda ()
     (interactive)
     (minibuffer-with-setup-hook
         (lambda ()
            (insert ,str))
       (call-interactively ',fun))))

(defalias 'no-weekends
    (with-initial-minibuffer
        "\\(?:satur\\|sun\\)day"
      'query-replace-regexp))
点赞