Org-src-fontify-native maakt dat Magit denkt dat er niet-opgeslagen bestanden zijn

Ik heb een rare voor jou. Wanneer al het volgende waar is:

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

Dan krijg ik een overgebleven buffer met een naam als "org-src-fontification: clojure-mode". Het wordt beschouwd als een "onzichtbare" buffer, dus het verschijnt alleen wanneer listingbuffers van Elisp-code. Het verschijnt niet in de interactieve bufferlijst.

De volgende keer dat ik mijn magit-status vernieuw, krijg ik de vraag om een ​​bestand op te slaan. Er is geen optie om het over te slaan! Als ik het bestand opsla, heeft het de inhoud van de overgebleven interne buffer.

Als ik org-src-fontify-natively uitzet, gebeurt dit niet. Maar mijn export krijgt ook geen aardige fontificatie.

Is er een manier om die buffer weg te gooien of magit overtuigen om het te negeren?

2
Geeft C-x s in plaats van magit-status dezelfde prompt?
toegevoegd de auteur alastairs, de bron
@npostavs Ja dat doet het.
toegevoegd de auteur yuku, de bron

1 antwoord

Een oplossing is om de betrokken functies te adviseren. U zou bijvoorbeeld : after advies kunnen toevoegen aan org-src-font-lock-fontify-block om de buffer die het maakt te doden, misschien als volgt:

(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)    

De kill-org-src-buffers wordt herhaald voor alle buffers, waarbij alle buffers worden gedood die overeenkomen met het voorvoegsel van de buffernaam dat org-src-font-lock-fontify-block gebruikt voor zijn "tijdelijke" buffers. Als alternatief zou het adviseren van magit-save-repository-buffers met : voordat advies dat een vergelijkbare aanpak vereist, waarschijnlijk ook werken.

Ik denk dat het een fout is dat org-src-font-lock-fontify-block een buffer maakt met behulp van get-buffer-create om werk te doen dat slechts tijdelijk lijkt buffer; het zou in plaats daarvan met-temp-buffer moeten gebruiken.

3
toegevoegd
Ik denk dat de eigenlijke fout is dat de "tijdelijke" buffer uiteindelijk een bestand bezoekt (ik denk dat ze doelbewust de buffer gebruiken voor efficiëntie).
toegevoegd de auteur alastairs, de bron
@PythonNut: normaal, ja, ik zou een patch indienen, vooral wanneer de oplossing net zo eenvoudig is als wat hier nodig is: een wijziging van 3 regels om met-temp-buffer te gebruiken in plaats van with-current-buffer en get-buffer-create . Maar in dit geval ben ik geen echte gebruiker van een org-modus of magit-mode . Om een ​​ org-modus bug te melden, lijkt het erop dat ik me moet aanmelden voor hun mailinglijst, hun vereisten moet leren voor het formatteren van het bugrapport, zodat ze het zelfs in overweging kunnen nemen en daadwerkelijk kunnen uitvoeren org-mode en magit-mode om de details te krijgen die nodig zijn voor het rapport.
toegevoegd de auteur KristoferA, de bron
Zou je overwegen een fout in te dienen? Het klinkt alsof de oplossing niet te uitdagend is.
toegevoegd de auteur PythonNut, de bron