それは私の構成で正しく機能しますが、自動インデントに関係していると思われます(私のものは大幅にカスタマイズされているため、違いがある可能性があります)。追加しても問題は解決しますか
# expand-env: ((yas/indent-line 'fixed))
また
# expand-env: ((yas/indent-line t))
スニペットのヘッダーに?$>
インデントしたい行に追加して、それが違いを生むかどうかを確認することもできます(そうであれば、物事が大幅に絞り込まれます)。yasnippet のコードには、マーカーの場所の変更に関するいくつかの問題に関するメモがありますが、数年前に修正されたようです。
indent-line-function
が適切な値、つまりであることも確認する必要がありますLaTeX-indent-line
。
sit-for
の定義にいくつかの を追加yas/indent-according-to-mode
して、ポイントがさまざまな段階にある場所を確認できます。たとえば、次のコードをスクラッチ バッファーに入れ、カーソルをその末尾に置いて、 と入力しC-x C-e
ます。次に、通常どおりスニペットを挿入すると、コード内の(sit-for 1)
. したがって、カーソルが間違った場所から始まる場合、問題はインデントの前などにあることがわかります。インデントされているすべての行を監視する必要があるため、問題のある行を除いてインデントをオフにしたい場合があります$>
. を追加または削除sit-for
すると、絞り込むことができます。
(defun yas/indent-according-to-mode (snippet-markers)
"Indent current line according to mode, preserving
SNIPPET-MARKERS."
(sit-for 1)
(goto-char (yas/real-line-beginning))
(sit-for 1)
(let ((trouble-markers (remove-if-not #'(lambda (marker)
(= marker (point)))
snippet-markers)))
(save-restriction
(widen)
(sit-for 1)
(condition-case err
(indent-according-to-mode)
(error (message "[yas] warning: yas/indent-according-to-mode habing problems running %s" indent-line-function)
nil)))
(sit-for 1)
(mapc #'(lambda (marker)
(set-marker marker (point)))
trouble-markers)))