在 Emacs 中,如何修改 org-mode 键盘映射,以便 shift-tab 运行 yas-expand 而不是 org-shifttab?更好的是,我怎样才能使 shift-tab 仅在 point 位于片段触发器前面时运行 yas-expand ,否则运行 org-shifttab ?
另外,我在 org-mode wiki 中看到了这个条目。第一个选项不起作用,我无法让第二个选项起作用,因为我找不到backtab
相当于org-tab-first-hook
Org 模式绑定键的方式(绑定到 [tab] 而不是 "\t")会否决 YASnippet 对该键的访问。下面的代码解决了这个问题:
(add-hook 'org-mode-hook (lambda () (org-set-local 'yas/trigger-key [tab]) (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
最新版本的 yasnippet 不能很好地与 Org 模式配合使用。如果上面的代码不能解决冲突,请从定义以下函数开始:
(defun yas/org-very-safe-expand () (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
然后,告诉 Org 模式如何处理新功能:
(add-hook 'org-mode-hook (lambda () (make-variable-buffer-local 'yas/trigger-key) (setq yas/trigger-key [tab]) (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand) (define-key yas/keymap [tab] 'yas/next-field)))