假设我想创建一个新文档,并快速循环浏览列表。 如果只是一个“单词”,我认为应该有一般的方法来做到这一点。
例如:
"blue orange red yellow black white"
在创建时,有没有人知道如何循环使用这些项目:
\begin{orange}
...我想按一个键循环浏览此列表,用列表中的下一个项目替换橙色(在相反方向执行此过程并不难)?
我尝试了许多与宏有关的不同想法(将列表放在文档的顶部,并进行了大量的i-search),但这并没有削减它。
我愿意把这个列表放在一个elisp文件中,虽然我不知道如何使用elisp中的那个变量,比如一个LaTeX文档(.tex)。
答案 0 :(得分:2)
嗯,这可能是可能的,但取决于您愿意花多少精力编写eLisp代码以使其工作。只有一些配置选项是不可能的。我会考虑通过添加新的源来扩展自动完成,例如:
(defvar tex-tag-ac-sources
'((init . tex-tag-ac-init)
(requires . 0)
(candidates . tex-tag-ac-candidates)
(document . tex-tag-ac-documentation)
(match . tex-tag-completion-filter)
(prefix . tex-tag-ac-prefix-matcher)
(symbol . "s"))
"The source generator for autocompletion needed for interaction
with auto-complete")
tex-tag-ac-candidates
,tex-tag-ac-documentation
,tex-tag-completion-filter
和tex-tag-ac-prefix-matcher
是自动完成的功能。即当自动完成过程为指定的前缀启动时,将调用init函数一次。它被称为w / o参数。候选者是负责显示已过滤候选者列表的函数,它被称为w / o参数,您将过滤掉过滤函数中的候选者,使用到目前为止收集的前缀和目前的候选者列表调用它。最后,在文件的文本上调用matcher函数,以查看是否需要完成。因此,如果它返回t
,则调用init,然后在键入时循环遍历过滤器候选。
虽然这有点涉及......但你肯定可以完成你想要的任何事情。显然,如果源中的那些函数是由您定义的,那么,如果您愿意,可以动态读取完成参数或以某种方式动态生成它们。
啊,您可以通过以下方式将源添加到自动完成:
(auto-complete (list tex-tag-ac-sources))
如果按照每次通话进行,或
(setq ac-sources (list tex-tag-ac-sources <other sources>))
您可以在此处找到更多信息:http://cx4a.org/software/auto-complete/manual.html#Using_Source
答案 1 :(得分:1)
编辑:我将宏转换为函数。
这是我做的一种方式。我创建了一个名为“list.list”的文件,其中保存了我的“列表”。我在那里保存了Beamer的LaTeX模板。我这样插入它们:
Antibes Bergen Berkeley Berlin ..... Antibes
请注意,您应始终将第一个条目放入两次以允许循环。
以下是代码:
(defun cycle-list-word ()
(interactive)
(right-word)
(backward-kill-word 1)
(find-file "/emacs-24.1/list.list")
(search-forward (substring-no-properties (car kill-ring)) nil t)
(right-word)
(backward-kill-word 1)
(bury-buffer)
(yank)
)