【发布时间】:2011-12-26 07:58:56
【问题描述】:
我编写了一个交互式函数,它将“点上方的字符”插入到当前行。例如,给定包含“12345”的行,后跟“abcdef”行和位于字母“c”处的点,向下复制将使第二行变为“ab3cdef”。再次向下复制将使第二行变为“ab34cdef”。
我的函数在第二次调用它时失败(在 Windows 7 下使用 GNU Emacs 23.3.1),我通过插入第一次调用中的文本并且没有正确推进来调用它。如果我在调用之间放置任何 emacs“操作”,它就可以正常工作。 (例如,如果我执行向下复制、“左箭头”、“右箭头”、向下复制,这两种调用都可以正常工作。)
这是我的功能:
(defun copy-down ()
"Grab the character in the line above and insert at the current location."
(interactive)
(let ((beg (progn (previous-line 1) (point)))
(end (progn (forward-char) (point))))
(backward-char)
(next-line 1)
(insert-buffer-substring (current-buffer) beg end)))
如果重要的话,我通常将我的函数绑定到一个键:(global-set-key [f5] 'copy-down)
PS。我已经习惯了在多年前切换到 emacs 之前使用的编辑器中使用此功能,而我在 GNU Emacs 中很怀念它。 :-(
【问题讨论】:
标签: emacs