Sincronizando alterações em um arquivo emaranhado de volta ao arquivo organizacional original


12

Estou usando o org-mode com o modo de fonte para escrever um roteiro.

Org para organização e fonte para formatação de roteiro.

Este é o código que eu uso para esse fim:

Configurações para trabalhar com blocos de origem (fonte) na organização.

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

Por exemplo :

ato 1

** SQ 1

*** cena 1

Um monte de texto relacionado à cena e o que os personagens estão fazendo e tudo o que eu preciso saber, mas nunca acabará no roteiro.

Fonte BEGIN_SRC

texto do roteiro

END_SRC

Agora eu Cc 'e ele abre o acima em um novo buffer e eu posso pegá-lo a partir daí.


O problema com minha configuração atual é que ela não me deixa ver o texto do roteiro na íntegra.

Eu tenho mais ou menos 50 blocos desse tipo e gostaria de obter o seguinte:

Quero que a organização exporte todos os blocos de fontes para um arquivo específico, como o roteiro da fonte. Dessa forma, eu tenho um único arquivo apenas com o roteiro.

Todas as edições foram sincronizadas com o arquivo organizacional. Se eu editar alguma coisa no roteiro da fonte, o bloco de origem na organização deve atualizar a alteração e vice-versa.


Para fazer isso, inseri as seguintes propriedades no meu arquivo organizacional:

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

Quando eu Cc Cc, ele retorna com um erro dizendo que Nenhuma função de execução do org-babel foi encontrada.

E quando eu Cc Cv t diz 0 bloco emaranhado.

Minha abordagem está incorreta ou estou faltando alguma coisa?

Editar: alterei as propriedades para:

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

e quando eu Cc Cv t emaranha os blocos de origem em um nome de arquivo. Agora a parte da sincronização ainda precisa ser resolvida.


Isso é algo que também seria útil para programação. Você pode dar uma olhada outshine.el, parece seguir o caminho oposto (arquivo de origem com comentários que podem ser visualizados em um buffer organizacional), mas pode se aproximar do que você deseja. Isenção de responsabilidade: nunca tentei eu mesmo (ainda).
precisa saber é o seguinte

@ T.Verron Outshine parece ser semelhante ao lentic, onde o mesmo arquivo pode ser visto em buffers separados com modos diferentes. Vou ler mais para verificar se há recursos adicionais que o lentic não possui.
curioso-escrevinhador

Essa sincronização bidirecional pode existir (acho que não, mas os recursos do modo organizacional tendem a passar despercebidos), mas seria tremendamente mais fácil alternar a visibilidade do texto que não é fonte. Você ainda pode emaranhar um arquivo de vez em quando.
Malabarba 4/15

Há uma função org-babel-detangleque afirma isso (fornecer comentários sobre o link). Eu nunca fui capaz de fazê-lo funcionar.
erikstokes

2
Eu só testou o org-babel-desembaraçar e funcionou como esperado, embora eu fiz testes muito mínimas, longe de "produção-code", mas detangled corretamente com observações ligadas
Joafigue

Respostas:


6

Uma opção amplamente conhecida que implementa a conexão de ida e volta entre diferentes formatos de documento (organização e fonte, por exemplo) no mesmo arquivo é o recurso de servidor lêntico desenvolvido por Phillip Lord. Ele pode ser instalado como o lentic pacote através repositório Melpa.

Há um screencast mostrando a integração no modo org e lisp no mesmo arquivo, com duas visualizações editáveis ​​diferentes ao mesmo tempo, vinculadas. Mudar em um faz mudanças no outro. Pode ser necessária alguma configuração inicial para acomodar os formatos necessários.

Essa é uma integração mais rica, mais adequada para edição, do que a saída unidirecional de emaranhado e desembaraço através da org-babel.


Eu discuto a afirmação "amplamente conhecida", já que acabei de descobrir sobre o lêntico a partir da sua resposta aqui. Além disso, como você pode ver no melpa, ele não possui tantas instalações, como eu esperava para um pacote que é basicamente pura magia!
Christian Herenz 6/06/19

1

Um pouco atrasado para a festa, mas eu tinha o mesmo desejo de sincronizar blocos emaranhados com seus arquivos externos.

Para isso, eu posso recomendar o org-tanglesync

Este pacote procura uma :tangle <filename>propriedade no cabeçalho de um arquivo organizacional e compara o conteúdo do bloco a ele. Um diff é executado em segundo plano e, em seguida, o usuário é solicitado a extrair ou rejeitar as alterações externas.

Acho que isso é mais intuitivo do que org-babel-detangleporque não exige que o arquivo externo tenha magia extra de organização para funcionar, ou seja, é o arquivo de origem que rastreia os blocos exportados externos e não o contrário.


2
Você pode elaborar?
DoMiNeLa10 18/08/19

1
O que @ DoMiNeLa10 disse. Talvez diga algo sobre o que esse pacote faz e como usá-lo como solução aqui é diferente de usar outras soluções propostas.
Tirou

atualizado, obrigado pela moderação útil
Mehmet Tekman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.