Org-src-fontify-ネイティブに、Magitに保存されていないファイルがあると思うようにする

私はあなたのために奇妙なものを持っている。次のすべてが当てはまる場合:

  • I'm using org-mode
  • My org-mode file has a code block
  • I export the org file
  • org-src-fontify-natively is true

次に、 "org-src-fontification:clojure-mode"のような名前の残ったバッファを取得します。それは "目に見えない"バッファと考えられているので、Elispコードからバッファをリストアップするときにのみ表示されます。インタラクティブバッファリストには表示されません。

次にmagit-statusを更新すると、ファイルを保存するように求められます。それをスキップするオプションはありません!ファイルを保存すると、残りの内部バッファの内容が保存されます。

org-src-fontify-native をオフにすると、これは起こりません。しかし、私の輸出品にもいいフォントの表示がありません。

そのバッファを破棄するか、またはそれを無視するようにmagitを説得する方法がありますか?

2
追加された
ビュー: 2
magit-status の代わりに C-x は同じプロンプトを表示しますか?
追加された 著者 alastairs,
@npostavsはい、そうです。
追加された 著者 yuku,

1 答え

1つの回避策は、関連する機能にアドバイスすることです。たとえば、:after のアドバイスを org-src-font-lock-fontify-block に追加すると、

(defun kill-org-src-buffers (&rest args)
  "Kill temporary buffers created by
org-src-font-lock-fontify-block so they don't interfere with
magit-mode."
  (dolist (b (buffer-list))
    (let ((bufname (buffer-name b)))
      (if (string-prefix-p " org-src-fontification:" bufname)
          (kill-buffer b)))))

(advice-add 'org-src-font-lock-fontify-block
            :after #'kill-org-src-buffers)    

kill-org-src-buffers はすべてのバッファを反復処理し、 org-src-font-lock-fontify-block 「一時的な」バッファー。あるいは、同様のアプローチをとる:before のアドバイスで magit-save-repository-buffers に助言を与えることも可能でしょう。

私は org-src-font-lock-fontify-blockget-buffer-create を使って一時的なものだけを必要とする作業を行うバッファを作成するバグだと思いますバッファ;代わりに with-temp-buffer を使用する必要があります。

3
追加された
私は実際のバグは、 "一時的な"バッファがファイルを訪れてしまうことだと思います(効率的にバッファを再利用していると思います)。
追加された 著者 alastairs,
@PythonNut:通常、はい、私はパッチを提出します。特に、ここで必要なものほど簡単な解決策があります:の代わりに with-temp-buffer を使用する3行の変更with-current-buffer および get-buffer-create を使用します。しかし、この場合、私は org-mode または magit-mode の実際のユーザーではありません。 org-mode バグを報告するには、自分のメーリングリストにサインアップし、バグレポートを書式設定する方法の要件を学んで、 org-modemagit-mode を使用して、レポートに必要な詳細を取得します。
追加された 著者 KristoferA,
あなたはバグを提出することを検討しますか?解決策があまりにも挑戦的ではないように思えます。
追加された 著者 PythonNut,