私は Emacs で LaTeX を使用しており、自分が書いた言葉をシェル コマンドに渡せるようにしたいと考えています。(例として、私は を使用しますxargs echo
。)
この目的のために、インタラクティブな elisp 関数を定義しました。
(defun echo ()
(interactive)
(let ((bnds (bounds-of-thing-at-point 'word)))
(shell-command-on-region (car bnds) (cdr bnds) "xargs echo")))
これはほとんどのバッファでうまく機能しますが、AUCTeX フォント ロックを使用する LaTeX バッファでは機能しません。ほとんどの単語は正常に機能しますが、単語の境界に引用符がある単語は正常に機能しません。
最小限の例:
\documentclass{article}
\usepackage{german}
\begin{document}
test "`Test"'
\end{document}
まず、概念の証明として: test
LaTeX バッファーでポイントがオンになっており、コマンド ( echo
) を実行すると、ミニバッファーtest
に結果として表示されます。(予想通り。)
ここでの問題:Test
代わりにポイントがオンで、コマンド xargs を使用すると、一致しない二重引用符について不平を言います。
この理由は、shell-command-on-region がTest
シェル コマンドに渡されるのではなく、 Test"'
. これは、私の elisp コードで を使用して確認できますxargs -0
。次に、結果としてミニバッファーを取得します。
テスト"'
この問題は、AUCTeX のフォント ロックに起因します。(これを使いたい!) に設定font-latex-quotes
するnil
と、コマンドは正常に動作します (ミニバッファーに返さTest
れます) が、もちろん、引用されたコンテンツはフォント化されません ...
AUCTeX でも動作するように elisp コードを変更する方法、または AUCTeX をカスタマイズして、引用されたコンテンツをフォント化するが正しい単語境界を保持する方法はありますか?