РЕДАКТИРОВАТЬ Моя проблема была связана с синтаксисом фрагмента все время ... Конфигурация ниже полностью работает.
Я пытаюсь использовать режим org и yasnippet вместе ион не работает даже с некоторыми из обходных путей в FAQ по режиму org.Всякий раз, когда я нажимаю TAB в аббревиатуре фрагмента, слово удаляется. TAB ведет себя нормально, если я не переписываюсь со словом фрагмента, поэтому что-то происходит ...
Я использую Org-mode version 7.7
, yasnippet (version 0.7.0)
и GNU Emacs 23.4.1
.
Вот мои настройки:
(setq load-path
(append (list nil
"~/.emacs.d/site-lisp/yasnippet"
"~/.emacs.d/site-lisp/org-7.7/lisp")
load-path))
;; set up yasnippet
(require 'yasnippet)
(yas/initialize)
(setq yas/snippet-dirs '("~/.emacs.d/mysnippets"
"~/.emacs.d/site-lisp/yasnippet/snippets"))
(mapc 'yas/load-directory yas/snippet-dirs)
;; set up org mode
(require 'org-install)
;; fix some org-mode + yasnippet conflicts:
(defun yas/org-very-safe-expand ()
(let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
(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)))
И я почти уверен, что ловушка работает так, как ожидалось, из-за следующего вывода Ch v org-tab-first-hook в орг-буфере:
org-tab-first-hook is a variable defined in `org.el'.
Its value is
(yas/org-very-safe-expand org-hide-block-toggle-maybe org-src-native-tab-command-maybe org-babel-hide-result-toggle-maybe)
А вот Ch k TAB в орг-буфере:
<tab> runs the command org-cycle, which is an interactive Lisp
function in `org.el'.
РЕДАКТИРОВАТЬ
После выполнения edebug-defun
на моей yas/org-very-safe-expand
функции я вижу следующее сообщение
Result: "[yas] elisp error! Symbol's value as variable is void: err"
Так что yas где-то ошибается ... My edebug
foo не совсем в норме, но если у меня будет время, я постараюсь сделать шаг и посмотреть, где ошибка.Моя полная конфигурация emacs на github здесь .