Emacs预测模式和TAB循环

时间:2013-03-31 13:12:46

标签: emacs autocomplete

我正在尝试在Emacs中使用预测模式在LaTeX文档中自动完成。当按下TAB时,我希望它执行以下操作

    如果只有一种可能性,
  • 完成这个词。 (这通常不会发生。单词的其余部分以蓝色突出显示,我必须按[Ctrl] - 输入才能完成。)

  • 如果有很多,
  • 循环使用替代品。 (我不知道如何做到这一点。)

1 个答案:

答案 0 :(得分:3)

您需要检查有多少完成候选人,并相应地致电completion-acceptcompletion-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)