我正在尝试在Emacs中使用预测模式在LaTeX文档中自动完成。当按下TAB时,我希望它执行以下操作
完成这个词。 (这通常不会发生。单词的其余部分以蓝色突出显示,我必须按[Ctrl] - 输入才能完成。)
循环使用替代品。 (我不知道如何做到这一点。)
答案 0 :(得分:3)
您需要检查有多少完成候选人,并相应地致电completion-accept
或completion-cycle
。
以下应该做的诀窍:
(defun completion-accept-or-cycle (&optional n)
"Accept current completion if there's only one possible candidate.
Otherwise, cycle the completion candidates. A numerical prefix argument
N specifies the number of candidates to cycle forwards (or backwards if
N is negative)."
(interactive)
(let ((overlay (completion-ui-overlay-at-point)))
(when overlay
(if (= (length (overlay-get overlay 'completions)) 1)
(completion-accept)
(completion-cycle n)))))
现在将TAB绑定到.emacs中completion-accept-or-cycle
键映射中的这个新completion-overlay-map
命令:
(define-key completion-overlay-map "\t" 'completion-accept-or-cycle)