有没有人有用于缩进(和取消缩进)文本块的 Emacs 宏?
我的意思是通常理解的“缩进”,而不是 Emacspeak。换句话说,我想标记一个区域,按 Cu 2,运行这个宏,并让它在该区域的每一行之前添加两个空格。
或者在运行宏之前按 Cu -2 并让它从区域中每行的开头删除两个空格。如果它抱怨行没有足够的前导空白,则奖励积分。
indent-rigidly (绑定到 Cx TAB) 做你想要的。它在 indent.el 中,它应该是标准 emacs 发行版的一部分。
此外,当某个地方没有足够的空白时让它抱怨/中止,你可以做这样的事情:(对原始缩进严格代码的快速丑陋黑客攻击)
(defun enough-whitespace-to-indent-p (start end arg)
(save-excursion
(goto-char end)
(setq end (point-marker))
(goto-char start)
(or (bolp) (forward-line 1))
(while (and (< (point) end)
(>= (+ (current-indentation) arg) 0))
(forward-line 1))
(>= (point) end)))
(defun indent-rigidly-and-be-picky (start end arg)
(interactive "r\np")
(if (or (plusp arg) (enough-whitespace-to-indent-p start end arg))
(indent-rigidly start end arg)
(message "Not enough whitespace to unindent!")))
默认使用indent-rigidly
绑定到C-x TAB