Synchronizowanie zmian w splątanym pliku z powrotem do oryginalnego pliku org

12

Używam trybu org z trybem fontanny do napisania scenariusza.

Organizacja do organizacji i fontanna do formatowania scenariusza.

Oto kod, którego używam do tego celu:

Ustawienia pracy z blokami źródłowymi (fontannowymi) w org.

;; prevent org from messing with indentation of the source text.
(setq org-src-preserve-indentation t)
(setq org-edit-src-content-indentation 0)

;; open the buffer for editing fountain in another window.
(setq org-src-window-setup (quote reorganize-frame))

;; prevent a message in the edit buffer from being shown.
(setq org-edit-src-persistent-message nil)

;; save edits in the fountain buffer to the org buffer after x sec
(setq org-edit-src-auto-save-idle-delay 1)

Na przykład :

akt 1

** SQ 1

*** Scena 1

Kilka tekstów związanych ze sceną i tym, co robią postacie oraz wszystko, co muszę wiedzieć, ale nigdy nie trafi do scenariusza.

Fontanna BEGIN_SRC

tekst scenariusza

END_SRC

Teraz I Cc 'i otwiera powyższe w nowym buforze i stamtąd mogę go wziąć.


Problem z moją obecną konfiguracją polega na tym, że nie pozwala mi zobaczyć w całości tekstu scenariusza.

Mam około 50 takich bloków i chciałbym osiągnąć następujące cele:

Chcę, aby org wyeksportował wszystkie bloki fontann do określonego pliku, powiedzmy scenariusz fontanny. W ten sposób mam tylko jeden plik ze scenariuszem.

Wszystkie zmiany są zsynchronizowane z plikiem org. Jeśli edytuję cokolwiek w scenariuszu z fontanną, blok źródłowy w org powinien zaktualizować zmianę i odwrotnie.


Aby to zrobić, wstawiłem następujące właściwości do mojego pliku org:

:PROPERTIES:
:file: "~/files/fountain-screenplay.fountain"
:cache: yes
:comments: yes 
:tangle: yes
:results: silent
:END: 

Kiedy I Cc Cc zwraca błąd z informacją, że nie znaleziono funkcji wykonywania org-babel.

A kiedy I Cc Cv t mówi 0 splątanych bloków.

Czy moje podejście jest nieprawidłowe, czy coś mi brakuje?

Edycja: Zmieniłem właściwości na:

#+properties :file .fountain :cache yes and so on 

a kiedy I Cc Cv t splata bloki źródłowe z nazwą pliku. góra. Teraz część synchronizacji pozostaje do rozwiązania.

ciekawy bazgroły
źródło
Przydałoby się to również w programowaniu. Możesz rzucić okiem outshine.el, wygląda na to, że podąża przeciwną drogą (plik źródłowy z komentarzami, które można wyświetlić w buforze organizacyjnym), ale może zbliżyć się do tego, co chcesz. Oświadczenie: nigdy nie próbowałem tego (jeszcze).
T. Verron
@ T.Verron Outshine wydaje się być podobny do lentic, gdzie ten sam plik można zobaczyć w osobnych buforach z różnymi trybami. Przeczytam więcej, aby sprawdzić, czy ma dodatkowe funkcje, których nie ma lentic.
ciekawy skryba
Ta dwukierunkowa synchronizacja może istnieć (nie sądzę, że tak jest, ale funkcje trybu org mają tendencję do pozostania niezauważonym), ale znacznie łatwiej byłoby po prostu przełączać widoczność tekstu innego niż fontanna. Następnie możesz od czasu do czasu zaplątać się w plik.
Malabarba
Istnieje funkcja, org-babel-detanglektóra do tego twierdzi (zapewniają splątane komentarze do linków). Nigdy nie udało mi się go uruchomić.
erikstokes
2
Właśnie przetestowałem detangle org-babel-detangle i zadziałało to zgodnie z oczekiwaniami, chociaż wykonałem bardzo minimalne testy, dalekie od „kodu produkcyjnego”, ale poprawnie rozplątało się z powiązanymi komentarzami
Joafigue

Odpowiedzi:

6

Jedną z powszechnie znanych opcji, która implementuje dwukierunkowe łączenie w obie strony między różnymi formatami dokumentów (na przykład org i fontanna) w tym samym pliku, jest funkcja serwera lentic opracowana przez Phillip Lord. Może być instalowany jako lentic pakiet przez MELPA repozytorium.

Istnieje zrzut ekranu pokazujący tryb org i integrację lisp w tym samym pliku z dwoma różnymi edytowalnymi widokami w tym samym czasie, połączonymi. Zmiana jednego powoduje zmiany w drugim. Może być wymagana wstępna konfiguracja w celu dostosowania do wymaganych formatów.

Jest to bogatsza integracja, bardziej odpowiednia do edycji, niż powiedzmy, że jednokierunkowe wyjście splątania i rozplątywania poprzez org-babel.

Użytkownik Emacsa
źródło
Kwestionuję to „powszechnie znane” stwierdzenie, ponieważ właśnie znalazłem informacje na temat lentic z twojej odpowiedzi tutaj. Ponadto, jak widać na melpie, nie ma ona tak wielu instalacji, jak bym się spodziewał po pakiecie, który jest w zasadzie czystą magią!
Christian Herenz
1

Nieco późno na imprezę, ale tak samo chciałem zsynchronizować splątane bloki z ich zewnętrznymi plikami.

W tym celu mogę polecić org-tanglesync

Ten pakiet szuka :tangle <filename>właściwości w nagłówku pliku org i porównuje z nią zawartość bloku. W tle wykonuje się różnicę, a następnie użytkownik jest monitowany o pobranie lub odrzucenie zmian zewnętrznych.

Uważam, że jest to bardziej intuicyjne niż org-babel-detangledlatego, że nie wymaga, aby plik zewnętrzny posiadał dodatkową magię org-babel, aby działał, tj. Jest to plik źródłowy, który śledzi eksportowane zewnętrzne bloki, a nie odwrotnie.

Mehmet Tekman
źródło
2
Czy możesz rozwinąć?
DoMiNeLa10 18.08.19
1
Co powiedział @ DoMiNeLa10. Może powiedz coś o tym, co robi ten pakiet i jak użycie go jako rozwiązania różni się od korzystania z innych proponowanych rozwiązań.
Drew
zaktualizowane, dziękuję za pomocną moderację
Mehmet Tekman