在Emacs中,如何修改org-mode键映射,以便shift-tab运行yas-expand而不是org-shifttab?更好的是,我怎样才能使shift-tab仅在点位于片段触发器前面时运行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)))