我希望在缓冲区中快速生成文本,如下所示:
(fact "This is some text which will hang out
only on this part of the screen, ideally
automatically flowing to the correct
margins as I type."
(+ 1 1) => 2
;; more Clojure tests...
)
我有一个Elisp键绑定,可以快速吐出一个起始模板并将光标放在正确的位置:
(global-set-key "\C-of" (lambda ()
(interactive)
(insert "(fact \"\"\n\n )")
(backward-char 6)))
现在,当我输入字符串部分("This is some text..."
)时,如果我能让Emacs自动将文本流向"正确"那么它真棒!利润率。是否有某种方法可以根据您键入的位置调整边距和环绕行为?至少,你第一次在那里打字?
除非对于给定的文本选择,我如何才能使用fill-region
,而是使用所需的左右边距?目前fill-region
会删除fact
和"This is....
之间的所有空格,其余部分则为左对齐。
答案 0 :(得分:1)
我现在可能有一种更简单的方法,但我会这样做:
在临时缓冲区中配置文本块,方法如下:
一个。将fill-column
设置为所需文本块的宽度。
湾将文本放在行的开头,即不缩进。
℃。填写文字。
d。使用indent-rigidly
将文本缩进到所需的列,第一行除外。
插入目标缓冲区(fact
,然后插入文本块第一行所需的缩进。然后插入临时缓冲区的内容。然后插入您需要的任何其他文本/代码。
IOW,我会将填充文本块与缩进它分开。
答案 1 :(得分:0)
以下似乎对我的另类(较弱)案例起作用:
;; Set up Midje fact with mark inserted at beginning of comment text
;; (refill as needed in appropriate columns, using C-oF).
(global-set-key "\C-of" (lambda ()
(interactive)
(insert "(fact \"\"\n\n )")
(backward-char 6)
(set-mark (point))))
;; Perform the refill operation to properly reformat the text string
;; in a Midje fact, started with C-of:
(global-set-key "\C-oF" (lambda ()
(interactive)
(set-left-margin (mark) (point) 37)
(fill-region (mark) (point))))
我希望我在使用它的过程中不得不调整它,但它非常接近。尽管如此,如果我在字符串中键入内容,我们可以自动了解如何自动完成此操作。