การซิงค์การเปลี่ยนแปลงในไฟล์ที่มีการพันกันกลับไปเป็นไฟล์ org ดั้งเดิม


12

ฉันกำลังใช้โหมด org กับโหมด fountain เพื่อเขียนบทภาพยนตร์

องค์กรสำหรับองค์กรและแหล่งข้อมูลสำหรับการจัดรูปแบบภาพยนตร์

นี่คือรหัสที่ฉันใช้เพื่อจุดประสงค์นี้:

การตั้งค่าสำหรับการทำงานกับบล็อกแหล่งที่มา (แหล่งน้ำพุ) ในองค์กร

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

ตัวอย่างเช่น :

พระราชบัญญัติ 1

** SQ 1

*** ฉาก 1

ข้อความที่เกี่ยวข้องกับฉากและตัวละครกำลังทำอะไรและทุกอย่างที่ฉันต้องรู้ แต่จะไม่มีวันจบลงในบทภาพยนตร์

BEGIN_SRC น้ำพุ

ข้อความภาพยนตร์

END_SRC

ตอนนี้ฉัน Cc 'และมันเปิดข้างต้นในบัฟเฟอร์ใหม่และฉันสามารถนำขึ้นจากที่นั่น


ปัญหาของการตั้งค่าปัจจุบันของฉันคือมันไม่ให้ฉันเห็นข้อความภาพยนตร์ทั้งหมด

ฉันมีบล็อคดังกล่าวมากกว่า 50 บล็อกและฉันต้องการบรรลุเป้าหมายดังต่อไปนี้:

ฉันต้องการให้องค์กรส่งออกบล็อกน้ำพุทั้งหมดไปยังไฟล์ที่ระบุพูดถึงบทภาพยนตร์ ด้วยวิธีนี้ฉันมีไฟล์เดียวที่มีการเล่นหน้าจอเท่านั้น

ซิงค์การแก้ไขทั้งหมดกับไฟล์ org แล้ว ถ้าฉันแก้ไขอะไรใน Fountain-Screenplay บล็อกต้นทางในองค์กรควรอัปเดตการเปลี่ยนแปลงและในทางกลับกัน


เมื่อต้องการทำสิ่งนี้ฉันได้แทรกคุณสมบัติต่อไปนี้ในไฟล์ org ของฉัน:

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

เมื่อฉันสำเนาถึงสำเนาถึงมันกลับมาพร้อมกับข้อผิดพลาดบอกว่าไม่พบฟังก์ชั่นการเรียกใช้ org-babel

และเมื่อฉันสำเนาถึงมันบอกว่า 0 บล็อกพันกัน

วิธีการของฉันไม่ถูกต้องหรือฉันขาดอะไรไป?

แก้ไข: ฉันเปลี่ยนคุณสมบัติเป็น:

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

และเมื่อฉันสำเนาถึงมัน tangles บล็อกแหล่งที่มากับชื่อไฟล์ภูเขา ตอนนี้ส่วนการซิงค์ยังคงได้รับการแก้ไข


นี่คือสิ่งที่จะเป็นประโยชน์สำหรับการเขียนโปรแกรมด้วย คุณสามารถดูoutshine.elได้ดูเหมือนว่าใช้ถนนฝั่งตรงข้าม (ไฟล์ต้นฉบับพร้อมความคิดเห็นซึ่งสามารถดูได้ในบัฟเฟอร์ขององค์กร) แต่อาจเข้าใกล้สิ่งที่คุณต้องการ คำเตือน: มันไม่เคยลองด้วยตัวเอง (ยัง)
ต. Verron

@ T.Verron Outshine ดูเหมือนจะคล้ายกับ lentic ซึ่งสามารถเห็นไฟล์เดียวกันในบัฟเฟอร์ที่แยกต่างหากด้วยโหมดที่แตกต่างกัน ฉันจะอ่านเพิ่มเติมเพื่อตรวจสอบว่ามีฟีเจอร์เพิ่มเติมที่ lentic ไม่มีหรือไม่
Scribbler อยากรู้อยากเห็น

การซิงค์แบบสองทางนี้อาจมีอยู่ (ฉันไม่คิดว่าจะเป็นเช่นนั้น แต่คุณลักษณะโหมด org มีแนวโน้มที่จะไม่มีใครสังเกตเห็น) แต่มันจะง่ายกว่ามากหากเพียงแค่สลับการแสดงข้อความที่ไม่ใช่น้ำพุ จากนั้นคุณยังสามารถยุ่งเหยิงกับไฟล์ทุกครั้ง
Malabarba

มีฟังก์ชั่นorg-babel-detangleที่อ้างถึงสิ่งนี้ (ให้คุณพันกับความคิดเห็นลิงค์) ฉันไม่สามารถทำงานได้
erikstokes

2
ฉันเพิ่งทดสอบ org-babel-detangle และทำงานได้ตามที่คาดไว้แม้ว่าฉันจะทำการทดสอบน้อยมากไกลจาก "รหัสการผลิต" แต่ detangled อย่างถูกต้องกับความคิดเห็นที่เชื่อมโยง
Joafigue

คำตอบ:


6

ตัวเลือกหนึ่งที่รู้จักกันอย่างกว้างขวางซึ่งใช้การเชื่อมโยงไปกลับสองทางระหว่างรูปแบบเอกสารที่แตกต่างกัน (ตัวอย่างเช่น org และแหล่งน้ำพุ) ภายในไฟล์เดียวกันคือฟีเจอร์เซิร์ฟเวอร์ lentic ที่พัฒนาโดย Phillip Lord มันสามารถติดตั้งเป็นlenticแพคเกจผ่านพื้นที่เก็บข้อมูล MELPA

มีscreencastแสดงโหมดองค์กรและการรวมเสียงกระเพื่อมในไฟล์เดียวกันที่มีสองมุมมองที่สามารถแก้ไขได้ที่แตกต่างกันในเวลาเดียวกันเชื่อมโยง การเปลี่ยนแปลงในหนึ่งทำให้การเปลี่ยนแปลงในอื่น ๆ การตั้งค่าเริ่มต้นบางอย่างอาจต้องรองรับรูปแบบที่คุณต้องการ

นี่คือการรวมที่สมบูรณ์ยิ่งขึ้นเหมาะสำหรับการแก้ไขมากกว่าพูดออกทางเดียวของยุ่งเหยิงและ detangle ผ่าน org-babel


ฉันโต้แย้งคำสั่ง "ที่รู้จักกันอย่างกว้างขวาง" เนื่องจากฉันเพิ่งพบเกี่ยวกับการให้ยืมจากคำตอบของคุณที่นี่ นอกจากนี้อย่างที่คุณเห็นใน Melpa มันมีการติดตั้งไม่มากเท่าที่ฉันคาดไว้สำหรับแพ็คเกจที่เป็นเวทย์มนตร์ที่บริสุทธิ์!
Christian Herenz

1

สายไปงานเลี้ยงเล็กน้อย แต่ฉันก็มีความปรารถนาเดียวกันในการซิงค์บล็อกที่มีการพันกันกับไฟล์ภายนอกของพวกเขา

สำหรับสิ่งนี้ฉันสามารถแนะนำorg-tanglesync

แพ็กเกจนี้ค้นหา:tangle <filename>คุณสมบัติในส่วนหัวของไฟล์ org และเปรียบเทียบเนื้อหาบล็อกกับมัน diff จะดำเนินการในพื้นหลังและจากนั้นผู้ใช้จะได้รับแจ้งให้ดึงหรือปฏิเสธการเปลี่ยนแปลงภายนอก

ฉันพบว่าสิ่งนี้ใช้งานง่ายกว่าorg-babel-detangleเพราะไม่ต้องการให้ไฟล์ภายนอกมีเวทย์มนตร์ org-babel พิเศษเพื่อให้ทำงานได้เช่นมันเป็นไฟล์ต้นฉบับที่ติดตามบล็อกที่เอ็กซ์พอร์ตภายนอกไม่ใช่วิธีอื่น


2
คุณสามารถทำอย่างละเอียด?
DoMiNeLa10

1
สิ่งที่ @ DoMiNeLa10 พูด อาจพูดบางอย่างเกี่ยวกับสิ่งที่แพ็คเกจทำและวิธีใช้เป็นโซลูชันที่นี่แตกต่างจากการใช้โซลูชันที่เสนออื่น ๆ
ดึง

อัปเดตขอขอบคุณสำหรับการกลั่นกรองที่เป็นประโยชน์
Mehmet Tekman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.