我正在尝试编写一个elisp函数来缩进该区域或当前行。我的功能是:
(defun shift-text (distance)
(interactive "p")
(if (use-region-p)
(save-excursion
(let ((r-start (region-beginning))
(r-end (region-end)))
(let ((i-start (progn (goto-char r-start) (line-beginning-position)))
(i-end (progn (goto-char r-end) (line-end-position))))
(indent-rigidly i-start i-end distance)
(setq deactivate-mark nil))))
(indent-rigidly (line-beginning-position)
(line-end-position)
distance)))
正常工作。但是,每当我尝试在use-region-p
返回true时撤消缩进,第一行就不会返回到正确的位置。
我已经看到它都停留在缩进的位置,并进一步增加其缩进;对于给定的文本块,以一致的方式,但没有明确的模式,我可以看到。例如,这是可能发生的一件事:
;;Initial
Indented
Lines
Of Text
;;After calling function
Indented
Lines
Of Text
;;After undoing
Indented
Lines
Of Text
使用此函数之外的相同参数调用indent-rigidly
行为正常,因此我认为它必须是我正在做的事情。然而,似乎唯一能解决它的问题是对indent-rigidly
的值进行硬编码。
这是怎么回事?
答案 0 :(得分:0)
最好的方法是拨打indent-rigidly
,然后从新线开始:
#' My function. Does stuff with numbers.
#'
#' This takes an input `x` and does something with it.
#' @param x a number.
myFunction <- function (x) {
}