【问题标题】:How to create a register-like function in Emacs如何在 Emacs 中创建类似寄存器的函数
【发布时间】:2012-11-06 06:16:23
【问题描述】:

我想使用 kill-ring 和寄存器的一些特性创建一个函数。

基本上我想创建一个新模式,其中 r 后跟 p 应该将段落指向一个列表( r w 应该将单词放在该列表中的某个位置)。

然后,i 应该在该点插入该列表中的任何内容。

这是我目前的注册:

(defun Navi-register-region ()
(interactive)
(copy-to-register ?N (region-beginning) (region-end))
)

我对列表的历史不感兴趣,我只想让它不断地用当前选择的字符串替换变量中的字符串。

编辑:所以这就是我现在所拥有的,尽管它错误“错误的类型参数编号或标记”

(defun Navi-word-reg ()
  (interactive)
  (save-excursion 
          (right-word)
          (push-mark (point) t t)
          (left-word)
          (kill-ring-save (region-beginning) (region-end))
          (defvar bla (car kill-ring-yank-pointer))
          ; and here I would use something to remove last item from kill-ring 
              ))

当我尝试使用 (interactive "r") 时,变量包含:

#("bla bla bla" 0 20 (fontified t))

当使用下面的函数时。

(defun Navi-region-reg (beg end)
      (interactive "r")
      (save-excursion (kill-ring-save (region-beginning) (region-end))
              (defvar bla (car kill-ring))))

如何提取“bla bla bla”?仍然......另一个问题是我希望能够将单词添加到变量“bla”中。 (interactive "r") 是不可能的,对吧?

【问题讨论】:

  • 也许添加评论为什么要 -1 问题...让我改进问题。
  • 我没有给你-1。但是,关于改进:两次阅读您的问题后,我仍然没有完全意识到您要存档的内容。你说的列表到底是什么意思?也许只是举例说明你的函数应该如何表现。

标签: function emacs kill


【解决方案1】:

我花了很长时间,但它在这里(你自己的额外“注册/杀死环”:

(defun Navi-region-reg ()
  (interactive)
  (save-excursion (left-word 1)
          (mark-word) 
          (kill-ring-save (region-beginning) (region-end))
          (setq Navireg (substring-no-properties (car kill-ring)))
          (setq kill-ring (cdr kill-ring))))

然后插入

(defun Navi-insert ()
 (interactive)
 (insert Navireg)
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多