首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用kill-ring的内容作为通用参数的前缀-arg?

如何使用kill-ring的内容作为通用参数的前缀-arg?
EN

Stack Overflow用户
提问于 2013-11-02 01:20:07
回答 2查看 75关注 0票数 3

有时我希望能够做到以下几点:

"C-u xxx ...“

其中xxx是我最后一次放入kill-ring中的整数(通过杀死我缓冲区中的一个数字)。

这是我想和宏一起使用的东西,所以我不能手动输入这个整数。

那么我如何弹出kill ring并(解析并)传递弹出到"C-u“的数字呢?

请注意,我想将它与几个函数一起使用,所以我真的希望它能像C-u一样工作(但我不需要手动输入数字,我希望它是从kill ring中获取的)。

EN

回答 2

Stack Overflow用户

发布于 2013-11-02 01:45:37

这是一个粗略的尝试:

代码语言:javascript
复制
(defun prefix-argument-from-kill-ring ()
  "Set the numeric argument for the following command to the
number that was the previous kill."
  (interactive)
  (setq prefix-arg (list (string-to-number (current-kill 0)))))

一个更有原则的实现将检查kill的文本,并在它不是数字的情况下执行一些合理的操作。

票数 4
EN

Stack Overflow用户

发布于 2013-11-02 02:24:18

使用digit-argument作为模板,我写了这段代码,它似乎工作得很好:

代码语言:javascript
复制
(defun yank-universal-digits (arg)
  (interactive "P")
  (let* ((digits (current-kill 0))
         (digits (if (string-match "\\`0*\\([1-9][0-9]*\\)\\'" digits)
                     (match-string 1 digits)
                   (error "Current kill is not a positive integer")))
         (num (string-to-number digits)))
    (cond ((integerp arg)
           (setq prefix-arg (+ (* arg (expt 10 (length digits)))
                               (* num (if (< arg 0) -1 +1)))))
          ((eq arg '-)
           (setq prefix-arg (- num)))
          (t
           (setq prefix-arg num)))
    (setq universal-argument-num-events (length (this-command-keys)))
    (save&set-overriding-map universal-argument-map)))

(define-key universal-argument-map [?\C-y] 'yank-universal-digits)

安排删除的数字出现在minibuffer中,就像您直接键入它们一样,这是一个练习。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19731876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档